Обратите, пожалуйста, внимание на то, что отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
09.02.2006
История переиздания
Издание 1.00
09.02.2006
Первоначальная версия.
Аннотация
Описан впервые введенный в PHP 5 оператор instanceof. Подведены предварительные итоги проделанной работы по разработке учебного приложения.
Оператор instanceof введен в PHP 5 взамен устаревшей функции is_a(). Так же, как и последняя, оператор позволяет определить, является ли данный объект экземпляром определенного класса.
Оператор instanceof используется подобно бинарным (двухместным) логическим операторам.
$b = $foo instanceof Foo;
Можно использовать этот оператор и в сочетании с другими операторами.
$b = !($foo instanceof Foo);
Оператор возвращает логическое значение true, если объект принадлежит к определенному классу; в противном случае оператор возвращает логическое значение false (Пример 1, «Использование оператора instanceof»).
Объект считается принадлежащим не только своему, но и родительскому классу, если таковой имеется. Кроме того, при реализации определенного интерфейса, объект будет принадлежать также и этому интерфейсу.
Пример 1. Использование оператора instanceof
<?php
interface I {
}
class A {
}
class B {
}
class C extends A implements I {
}
print new A instanceof A ? '+' : '-';
print new B instanceof A ? '+' : '-';
print new C instanceof A ? '+' : '-';
print new C instanceof I ? '+' : '-';
?>
+-++
Практикум
Подведем промежуточные итоги проделанной на предыдущих занятиях работы.
В разрабатываемом нами учебном приложении уже вполне возможно выделить четыре уровня, или слоя, каждому из которых присуща своя степень специализации и своя роль в приложении (Пример 2, «Структура учебного приложения»).
Первый, наиболее универсальный уровень, - это PEAR. На данный момент мы используем два пакета: HTML_Page2 и HTML_Template_Flexy (в дальнейшем этот набор будет расширен). Пакеты используются нами в готовом виде и являются своего рода фундаментом, на котором построено наше приложение.
На следующем уровне находится пакет SSS. Этот пакет уже несколько более специализирован. Он объединяет функциональность двух упомянутых пакетов с предыдущего уровня, но реализует лишь наиболее общие механизмы подготовки и вывода страницы на основе заданного шаблона, предоставляя тем самым основу для разработки конкретных решений на следующем уровне.
Примером одного из таких возможных решений является класс SSSEx, основная задача которого - наполнить реальным содержимым каркас, созданный родительским классом из пакета с предыдущего уровня. Именно на дальнейшей разработке класса SSSEx мы, в основном, и сосредоточимся на ближайших занятиях.
Наконец, на последнем уровне расположен демонстрационный скрипт, который просто создает рабочий объект класса SSSEx.