Заголовок сообщения: обработчики событий в PHP (паттерн) Добавлено: 27 Декабрь 2006, 09:13:08
Привет всем
Хочу поделится патерном, до которого я недавно додумался. Нужна здравая критика и что можно улучшить. Речь естественно пойдет о ООП в PHP5.
Каждое написание класса я стараюсь упорядочить таким образом:
Код:
1. Обьявление переменных 2. Конструктор 3. Деструктор 4. Акцессоры - SET 5. Акцессоры - GET 6. Невизуальные методы 6.1. - Методы для работы с БД 6.1.1. - Запись 6.1.1. - Чтение 7. Визуальные методы (вывод HTML) 8. События
Именно о последним пункте я и хочу поговорить. Подержки событий в PHP5 грубо говоря нет. Все приходится делать руками.
Класс Cart - упростил как мог. Обратите внимание на обработчик событий для класса в котором вызывается обработчик событий для самой программы.
файл class.Cart.php
Код:
<?php class Cart {
// 1. Обьявление переменных private $_numItems; // Кол-во предметов в корзине private $_objectName; // Имя обьекта
// 2. Конструктор function __construct($objectName) { $this->_objectName = $objectName; }
// 6. Невизуальные методы function addItem() { // Метод добавляет предмет в корзину $this->_numItems++; // Т.е. просто увеличивает кол-во предметов на 1 $this->onChangeNumItems(); // Вызвать обработчик событий в этом классе }
// 8. События private function onChangeNumItems() { // Тут может быть код который меняет иконку корзины (пустая/полная). Program::onCartChangeNumItems($this->_objectName); // Вызвать обработчик событий в теле программы }
} ?>
-----------------
Тело самой программы содержит абстрактный класс (Program) в котором тоже содержатся обработчики событий.
Файл index.php
Код:
<?php include_once("class.Cart.php");
abstract class Program {
public function onCartChangeNumItems($objectName) { switch ($objectName) { case "myCart": // Обработчик событий только для объекта "myCart" echo "Hello World"; break; } }
}
$myCart = new Cart("myCart"); // Имя переменной-объекта записывается $myCart->addItem(); ?>
извиняюсь если сумбурно написал, но идея думаю понятна
Вообщем у кого какое мнение по такому строению / паттерну?
_________________ Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.