Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Приведение типа объекта
В данном конкретном случае я использую функцию getElementsByTagName, которая возвращает массив объектов типа DOMElement. Далее мне нужно обработать каждый объект в массиве, для этого в классе docxRow, который расширяет класс DOMElement, есть метод getHTML. Так вот, идея такая, привести объект класса DOMElement к типу docxRow, чтобы можно было использовать его метод getHTML. Не уверен, что доходчиво пояснил ситуацию...
Если в контексте, то сейчас так:
В общем вопрос в том, как привести тип объекта? Спасибо.
EuGen
Отправлено: 21 Сентября, 2012 - 15:22:38
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Базовый класс не может знать о том, каким образом и что от него унаследовано. Приведение типов здесь ни при чем, у Вас некорректное понимание о наследовании. Если нужны методы базового класса и некоторая собственная специфика - то это можно сделать, унаследовав свойства базового класса. "Наоборот" - не несет в себе никакого смысла.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 21 Сентября, 2012 - 15:26:47
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
JROUD
Зачем вообще в PHP приведение типов?
это скриптовый язык с динамической типизацией
Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
EuGen пишет:
Если нужны методы базового класса и некоторая собственная специфика - то это можно сделать, унаследовав свойства базового класса.
То, что можно унаследовать свойства базового класса - это и так понятно, но вполне логично предположить, если один класс наследует другой, то объект базового класса может быть приведён к типу класса наследника. Мой вопрос заключается в том, позволяет ли это делать PHP или нет.
caballero пишет:
Зачем вообще в PHP приведение типов?
Для приведения типов...
snikers987
Отправлено: 21 Сентября, 2012 - 16:48:19
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
JROUD пишет:
EuGen пишет:
Если нужны методы базового класса и некоторая собственная специфика - то это можно сделать, унаследовав свойства базового класса.
То, что можно унаследовать свойства базового класса - это и так понятно, но вполне логично предположить, если один класс наследует другой, то объект базового класса может быть приведён к типу класса наследника. Мой вопрос заключается в том, позволяет ли это делать PHP или нет.
caballero пишет:
Зачем вообще в PHP приведение типов?
Для приведения типов...
Ну и где тут логика? Потомок может рассматриваться как экземпляр базового класса, так как реализует все его интерфейсы, в то время как наследник реализует дополнительные, о которых базовый класс понятия не имеет.
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
JROUD
Отправлено: 21 Сентября, 2012 - 17:44:14
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
snikers987 пишет:
Потомок может рассматриваться как экземпляр базового класса, так как реализует все его интерфейсы, в то время как наследник реализует дополнительные, о которых базовый класс понятия не имеет.
Правильно. Потомок расширяет сущность родителя полностью наследуя её. Это как если встроить сушилку в стиральную машинку. Наличие сушилки в стиральной машинке не мешает ей быть стиральной машинкой, так и наличие новых членов у класса-потомка не означает отсутствие у него членов класса-родителя, поэтому логично и то, что объект класса родителя может быть приведён к типу класса потомка. Не вижу здесь ничего противоречивого.
caballero
Отправлено: 21 Сентября, 2012 - 17:46:26
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Мой вопрос заключается в том, позволяет ли это делать PHP или нет
Цитата:
Для приведения типов...
В PHP бессмысленно приведение. В нем просто нет необходимости
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
caballero пишет:
В PHP бессмысленно приведение. В нем просто нет необходимости
эт смотря как кодить и какой IDE пользоваться
если мне лениво запоминать все разнообразие ключей передваемый в массиве, и куда приятней работать объектов поля которого мне подскажет сама IDE. то вопрос очень даже адекватный. (Добавление)
судя по тесту и ошибкам, можно реализовать только как дополнительный метод класса, который будет возвращать объект нужного класса.
snikers987
Отправлено: 21 Сентября, 2012 - 18:06:22
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
JROUD пишет:
snikers987 пишет:
Потомок может рассматриваться как экземпляр базового класса, так как реализует все его интерфейсы, в то время как наследник реализует дополнительные, о которых базовый класс понятия не имеет.
Правильно. Потомок расширяет сущность родителя полностью наследуя её. Это как если встроить сушилку в стиральную машинку. Наличие сушилки в стиральной машинке не мешает ей быть стиральной машинкой, так и наличие новых членов у класса-потомка не означает отсутствие у него членов класса-родителя, поэтому логично и то, что объект класса родителя может быть приведён к типу класса потомка. Не вижу здесь ничего противоречивого.
Если взять 2 одинаковые стиральные машины, в одну встроить сушилку(унаследовав функционал стиральной машины), а вторую оставить просто стиральной машиной(не добавляя свойств сушилки), и пытаться в ней сушить, абсурд?
Это если для вас понятнее такая абстракция.
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
caballero
Отправлено: 21 Сентября, 2012 - 18:22:18
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
эт смотря как кодить и какой IDE пользоваться
при чем тут кодинг и IDE
PHP - нетипизированый язык
Цитата:
куда приятней работать объектов поля которого мне подскажет сама IDE.
подскажет еси ты явно объявищь тип переменной
но к приведенгию типов это не имеет отношения
никакмя IDE не проследит код тобы понять какой тип будет в рантайме
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
caballero, либо вы не работали с человеческой IDE, либо мы говорим о разных вещах
смотрите скрин Прикреплено изображение (Нажмите для увеличения)
caballero
Отправлено: 21 Сентября, 2012 - 21:00:08
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
о разных вещах
IDE может понимать подсказки в коментариях
но к самому коду это не относитсся
можно написать левый тип и IDE его покажет но в коде будет совсем другое
изначально речь шла о приведении типов
указание типа в коментариях для IDE
к компиляции и выполнению кода отношения не имеет
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.