EASY CMS: Пишем класс контейнер (PHP, public, is_object). |
|
|
Автор megabax
|
27.05.2010 г. |
Структура программы на примере простейшей программы
EASY CMS:
Пишем класс контейнер (PHP, public, is_object).
Что бы смотреть урок полностью, подпишитесь на
платный раздел.
В платном разделе статья находиться
здесь.
На прошлом уроке мы расшили функционал базового класса
ECMS_Base_class и создали шаблоны некоторых других классов, в частности
ECMS_Objects_container (контейнер объектов). Сегодня мы как раз начнем
реализовывать функционал контейнера: добавление объекта и глобальный поиск по
имени. Начнем с того, что в базовый класс добавим публичное свойство
owner (выделено красным):
class ECMS_Base_class {
protected
$name = ''; //Имя объекта
protected
$id; //идентификационный
код объекта
protected
$hierarchy_classes;
//массив иерархии классов
protected
$class_name; //имя класса
public
$owner;
//ссылка на владельца
... |
Это поле нужно для хранения ссылки на контейнер, в который он
помещен. Так же нам понадобиться в контейнере массив, добавим его в поля
класса, а заодно и немного переделаем конструктор (выделено красным)
...
...
... А теперь тестовый пример:
<html>
<head>
<title>Тест базового
класса EASY CMS</title>
<LINK HREF="ECMS.css"
REL="stylesheet"
TYPE="text/css">
</head>
<body>
<?php
include_once("EASYCMSBase.php");
init_ECMS();
//проверим добавление и поиск по имени
$a=new ECMS_Base_class;
$a->set_name("proba");
echo ("Переменная
a имеет имя ".$a->get_name()."<br>");
$b=new ECMS_Objects_container;
$b->set_name('cont');
$c=$b->add($a);
echo ("Переменная
c имеет имя ".$c->get_name()."<br>");
$d=$b->global_get_by_name("proba",NULL,true);
echo ("Переменная
d имеет имя ".$d->get_name()."<br>");
//протестируем проверку уникальности имен
$a1=new ECMS_Base_class;
$a1->set_name("proba");
$b->add($a1);
$a1->set_name("proba1");
$c1=$b->add($a1);
echo ("Переменная
c1 имеет имя ".$c1->get_name()."<br>");
//протестируем поиск внутри вложенных
объектов
$gl=new ECMS_Objects_container;
$gl->set_name('gl');
$gl->add($b);
$a2=new ECMS_Base_class;
$a2->set_name("proba2");
$gl->add($a2);
$d2=$gl->global_get_by_name("proba",NULL,true);
echo ("Переменная
d2 имеет имя ".$d2->get_name()."<br>");
//протестируем поиск с учетом владельца
$d3=$b->global_get_by_name("proba2",NULL,true);
echo ("Переменная
d3 имеет имя ".$d3->get_name()."<br>");
$d4=$b->global_get_by_name("proba3",NULL,true);
if($d4==NULL)
echo ("Имя proba3 не
найдено и это правильно<br>");
$b->add(1);
?>
</body>
</html> |
Вот что он должен выдать:
|
Последнее обновление ( 11.01.2011 г. )
|