В Yii приложение работает через взаимодействие различных объектов. Эти объекты можно просто считать «компонентами» или «строительными блоками» приложения. Компонент - это просто объект, который был написан для выполнения или облегчения конкретной задачи в приложении Yii. Если вы посмотрите на «Типичный рабочий процесс приложения Yii» на
[http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc][1]
вы поймете, что кроме view и layout (которые считаются скриптами) и index.php, все, что взаимодействует с другими, является компонентом. Все они выполняют разные задачи при запуске приложения.
Почти все в Yii является компонентом (или производным от класса CComponent).
Более конкретно
CComponent реализует протокол определения, использования свойств и событий. "
События : События позволяют выполнять последовательность (более одного) действий, когда в компоненте происходит что-то конкретное. Вы определяете событие и прикрепляете к нему ряд функций (действий). Теперь, когда это событие возникает внутри компонента, выполняются все функции, связанные с этим событием. Насколько я понимаю, это несколько похоже на концепцию хуков в Wordpress.
Конкретное применение событий в компоненте определяется Yii как
Это полезно, когда вы хотите прервать нормальный поток приложения без расширения базовых классов.
Поведения : Поведения - это просто способ Yii предоставить вам множественное наследование, которое не поддерживается в PHP5, в то же время устраняя проблему множественных функций с одинаковыми именами множественного наследования. Если вы хотите наследовать свойства и методы от классов A и B. Вы расширяете класс A, а затем присоединяете класс B в качестве его поведения, а затем вы также можете использовать все методы класса B. Теперь, если и A, и B содержат функцию с именем'fulfunction () ', все вызовы этой функции будут приводить к выполнению' полезной функции 'только из класса А. Если и класс A, и B были добавлены в качестве поведений к классу, то вызов «Полезная функция» приведет к выполнению метода из поведения, которое было присоединено первым.
P.S. (Я не эксперт. Поэтому, пожалуйста, поправьте меня, если я где-то ошибаюсь.)