| PHP Ръководство | ||
|---|---|---|
| Предишна страница | Глава 19. Класове и обекти (PHP 5) | Следваща страница |
Извикването на методи и достъпа до свойствата на даден клас могат да бъдат предефинирани посредством методите __call, __get и __set. Тези методи ще сработят когато текущият или наследеният обект не съдържа свойството или метода към който се осъществява достъп. Предефиниращите методи не трябва да бъде декларирани като статични. Всички методи, които ще се предефинират трябва да бъдат декларирани като public.
От PHP 5.1.0 е възможно предефинирането на функциите isset() и unset() посредством методите, съответно __isset и __unset. Също така, методът __isset се извиква от функция empty().
Свойствата на класовете могат да бъдат предефинирани чрез
дефинирането на специални методи, с цел изпълнение на собствен код.
Параметърът $name съдържа името на
променливата която трябва да се установи или върне.
Параметъра $value на метода __set() указва
стойността с която обекта трябва да установи $name.
Вълшебният метод __call() позволява да бъде прихванато извикването на
несъществуващи методи. Така, метода __call() може да се използва
за реализация на потребителски-дефинирана обработка на методи, която
зависи от името на конкретния извикан метод. Това е много удобно
за реализация на proxy. Аргументите на фунцкята, ще
бъдат предадени като масив в параметъра $arguments.
Стойността, върната от метода __call() ще бъде върната към
извикващия метод.
Пример 19-20. Пример за предефиниране с __call
Примерът по-горе ще изведе:
|
| Предишна страница | Начало | Следваща страница |
| Интерфейси | Начало на раздела | Итериране на обекти |