Новые книги

Дорогой друг! YouTube – это место, куда ты можешь залить что угодно: мысли из твоей головы, прохождение свежей компьютерной игры или серьезную инструкцию по выращиванию сельдерея. Здесь находится место всему, хотя развлекательный контент обычно набирает больше просмотров. Как стать крутым и известным? Как заработать, снимая видео? Книга ответит на эти и другие вопросы, связанные с YouTube.
Управление сервисами ИТ (IT Service Management, ITSM) развивается в России на протяжении последних пяти-шести лет, однако этот рынок еще недостаточно велик. Работающие в данной области компании не спешат объединить усилия и создать отечественные , хотя уже обладают квалификацией в сфере организации эффективной работы департаментов информационных технологий в различных отраслях. Между тем за рубежом накоплен солидный опыт в организации ИТ. В 80-х гг. британское Центральное агентство по вычислительной технике и телекоммуникациям (ныне OGC) разработало принципы эффективного использования ресурсов ИТ в государственных учреждениях страны. В результате была создана (IT Infrastructure Library, ITIL), где собраны лучшие методы в сфере услуг ИТ. В настоящее время библиотека представляет собой подробное описание наиболее важных видов деятельности в работе ИТ, перечень сфер ответственности, задач и процедур, которые, как утверждается, можно адаптировать для любого предприятия, большого или малого, использующего услуги аутсорсинга ИТ или реализующего собственные службы. На базе библиотеки ITIL свои структурированные подходы к управлению услугами ИТ разработали такие компании, как HP, IBM и Microsoft.

Книга представляет введение в ИТ Сервис-менеджмент - передовой подход по управлению информационными технологиями (ИТ). Он основан на материалах лучшего мирового опыта, собранного и систематизированного в Библиотеке ITIL (IT Infrastructure Library).

Перегрузка Свойств Объектов и Вызовов Методов

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

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