Программирование - это просто
Advertisement
Главная arrow Web-программирование arrow Углубленное изучение PHP. Пишем Easy CMS (пл. р.) arrow EASY CMS: Пишем класс контейнер (PHP, public, is_object).
06.07.2022 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
EASY CMS: Пишем класс контейнер (PHP, public, is_object). Печать E-mail
Автор 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>

Вот что он должен выдать:

EASY CMS:  Пишем класс контейнер (PHP, public, is_object).

 

Последнее обновление ( 11.01.2011 г. )
 
« След.   Пред. »
 
© 2022 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги