М-да, объяснили замечательно просто… Пример я посмотрел, со всех сторон, да вот толку мало, как для новичка, 3-й день пытаюсь понять что такое events и behavior в этом фреймворке и с чем его едят… Подробное объяснение в стиле "для чайника", или развернутый workflow процесса обработки событий и поведений, были бы лучшим вариантом. Если есть ссылки на что-либо подобное, поделитесь плз…
Поведение, оно же, например, в RubyOnRails называется mixin — способ расширения классов вроде множественного наследования. Например, к модели Post можно «подмешать» CTaggableBehaviour (для работы с тегами) и CTimestampBehaviour (для автоматического проставления дат создания и редактирования).
Смысл событий — компонент может зарегистрировать несколько событий и выполнить их в каких-то местах своего кода. Другие компоненты могут на эти события подписаться и соответственно выполнить по событиям какой-то код.
Помимо того, что дал выше почитать pirrat есть ещё (правда на английском):
А можно эту тему подробнее разжевать? Просто до этого никак не сталкивался ни с поведением, ни с событиями. Очень хочется разобраться. А по примерам в ссылках не очень то понятно.
Поведение - это механизм который позволяет менять методы объекта динамически.
Т.е. например есть объект и есть 2 поведения у которых метод create() делает разные вещи: у первого пишет в базу, у второго в файл.
Подключая различные поведения, можно собственно добиться различных поведений (тавтология) объекта.
Также подключая поведения можно добиться того же что добиваются от приложения, подключая плагины: разные функции. Подключаем несколько поведений и получаем аналог множественного наследования классов, которого нет в PHP5.
События:
У событий есть две стороны: слушатели и отправители, ну и сами события разумеется.
Слушатели сначала подписываются на определенные события, например добавление коммента.
Отправитель потом создает событие и его обрабатывают подписанные слушатели и исполняют свои функции, например первый слушатель отправляет емаил, а второй пишет в логи.