П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3500 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6101 раз(а).

Учебник HTML.
Просмотров 3265 раз(а).

Руководство по PHP5.
Просмотров 5486 раз(а).

Хостинг через призму DNS.
Просмотров 4124 раз(а).

Подборка текстов стандартных документов.
Просмотров 55763 раз(а).

Учебник PHP - Самоучитель
Просмотров 3078 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 5461 раз(а).

Внешние атаки...
Просмотров 3823 раз(а).

Учебник PHP.
Просмотров 2819 раз(а).

SSI в примерах.
Просмотров 37454 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь



http://www.mta33.ru купить станок абразивный отрезной.


Учебник РНР
Назад Вперёд

LXXV. Перегрузка/overloading свойств и вызовов методов объектов

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Это расширение предназначено для перегрузки доступа к свойствам объекта и вызовов методов. В этом расширении определена только одна функция, overload(), принимающая имя класса, в котором эта функциональность должна быть включена. Указанный класс должен определять соответствующие методы, если "хочет" иметь данную функциональность: __get(), __set() и __call(), соответственно, для получения /установки свойства или вызова метода. Этот способ перегрузки может быть избирательным. Внутри этих функций обработчика перегрузка отключена, поэтому вы можете нормально получать доступ к свойствам объекта.

Вот простые примеры использования функции overload():
Пример 1. Перегрузка PHP-класса
<?php

class OO
{
    var $a = 111;
    var $elem = array('b' => 9, 'c' => 42);

    // Callback-метод для получения свойства
    function __get($prop_name, &$prop_value)
    {
        if (isset($this->elem[$prop_name])) {
            $prop_value = $this->elem[$prop_name];
            return true;
        } else {
            return false;
        }
    }

    // Callback-метод для установки свойства
    function __set($prop_name, $prop_value)
    {
        $this->elem[$prop_name] = $prop_value;
        return true;
    }
}

// Здесь перегружаем объект OO
overload('OO');

$o = new OO;
print "\$o->a: $o->a\n"; // print: $o->a:
print "\$o->b: $o->b\n"; // print: $o->b: 9
print "\$o->c: $o->c\n"; // print: $o->c: 42
print "\$o->d: $o->d\n"; // print: $o->d:

// добавляем новый элемент в массив $elem в OO
$o->x = 56; 

// инстанциируем stdclass (он встроен в PHP 4)
// $val не перегружается!
$val = new stdclass;
$val->prop = 555;

// Устанавливает "a" как массив с объектом $val в нём
// но __set() поместит это в массив $elem
$o->a = array($val);
var_dump($o->a[0]->prop);

?>

Предупреждение!

Поскольку это экспериментальное расширение, не всё работает. Пока нет поддержки __call(), вы можете только перегружать get и set операции для свойств. Вы не можете вызывать оригинальные обработчики перегрузки класса, и __set() работает только на один уровень доступа к свойствам.

Содержание
overload - включает перегрузку свойств и вызовов методов класса

Назад Оглавление Вперёд
ob_start Вверхoverload


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru