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 :: Эмуляция перегрузки в PHP, метод __call()
Покинул форум
Сообщений всего: 126
Дата рег-ции: Июль 2011
Помог: 3 раз(а)
Цитата:
Вызовы методов могут быть перегружены с использованием методов __call, __get и __set. Эти методы будут срабатывать только в том случае, если объект или наследуемый объект не содержат метода, к которому осуществляется доступ.
+ нельзя переопределять функции а у вас в методе __call переопределена "t".
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
LIME пишет:
при выводе массива целиком выводится слово array
romantik2011 пишет:
Значение массива не выводит, выводит вместо значения просто слово Array
это нормальное поведение
чтобы вывести массив надо выводить поэлементно (Добавление)
или var_dump print_r
romantik2011
Отправлено: 03 Августа, 2011 - 21:18:41
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
А почему только вот так сработало? Почему без внутреннего цикла не запахало и без всяких проверок и приведений типов?
Кто-нибудь подскажет как реализовать не так громоздко цикл форич?
Покинул форум
Сообщений всего: 21
Дата рег-ции: Сент. 2009
Помог: 0 раз(а)
Мелкий пишет:
romantik2011, в PHP нет перегрузки методов и функций. А __call вызывается только тогда, если не определён запрашиваемый метод.
Минуточку, а что такое тогда интерфейсы? - ведь при последующей реализации они как раз перегружаются.
Мелкий
Отправлено: 17 Августа, 2011 - 12:15:38
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Opo6ac пишет:
Минуточку, а что такое тогда интерфейсы?
Абстрактный класс.
Но в отличии от сущности, объявленной абстрактным классом, интерфейсов у класса может быть несколько, но только если их методы не перекрываются между собой! http://habrahabr[dot]ru/blogs/php/116916/
И в этом случае не перегрузка, а реализация метода. Т.к. у интерфейса есть только определение. Почитайте про перегрузку методов и функций в C++, поймёте, о чём речь.
----- PostgreSQL DBA
Opo6ac
Отправлено: 17 Августа, 2011 - 13:07:57
Новичок
Покинул форум
Сообщений всего: 21
Дата рег-ции: Сент. 2009
Помог: 0 раз(а)
Мелкий, ага, я уже проникся проблемой. Оказывается, оно даже в 6й версии не планируется.
Будьте так любезны, посмотрите соседнюю тему - я там пытаюсь как раз.. вот теперь даже не знаю, как называется то, что я пытаюсь делать. Наверное, переопределить метод с сохранением прежнего функционала.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.