我正在学习yii框架并阅读了他们的文档。
但我仍然不理解这些组件。这些是什么。他们谈论组件事件和行为。
有人可以为我解释这些条款,并给我一个组件,事件和行为可能是什么的真实应用示例吗?
会有所帮助!
答案 0 :(得分:5)
CComponent本身并没有做太多。它非常像Qt中的QObject。 CComponent可以引发事件,并且可以拥有事件的委托(通过attachEventHandler())。
关于行为,手册说:
行为的方法可以是 被调用就像它们属于 零件。多种行为都可以 附在同一个组件上。
要将行为附加到组件, call attachBehavior;并分离 来自组件的行为,调用 detachBehavior。
可以暂时启用行为 或通过调用enableBehavior禁用 或者分别禁用行为。什么时候 禁用,行为方法不能 通过组件调用。
从1.1.0版开始,a 行为的属性(要么是它的 公共成员变量或其 通过getter和/或定义的属性 setters)可以通过 它附属的组件。
这使您可以模拟signals and slots机制,或strategy pattern(通过启用或禁用行为)。
Yii中的大多数类都将CComponent作为基类。
作为用户,当您创建自己的组件(在protected / components /下)时,您将看到他们通过上述机制提供的好处。
您可以在此处找到实施组件的良好起点:http://www.yiiframework.com/doc/guide/basics.component
答案 1 :(得分:4)
在Yii中,应用程序通过不同对象的交互来工作,这些对象可以简单地视为应用程序的“组件”或“构建块”。组件只是一个编写的对象,用于执行或促进Yii应用程序中的特定任务。如果你看过“Yii应用程序的典型工作流程” [http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc] [1]
你会意识到除了视图和布局(被认为是脚本)和index.php之外,与其他人交互的一切都是一个组件。它们在运行应用程序时都执行不同的任务。
Yii中的几乎所有内容都是一个组件(或从CComponent类派生)。
更具体地说,
CComponent实现了使用属性和事件定义的协议。“
事件:事件允许您在组件中发生特定事件时执行序列(多个)操作。您可以定义一个事件并为该事件附加许多功能(操作)。现在,只要在组件中引发该事件,就会执行附加到该事件的所有函数。根据我的理解,这些有点类似于Wordpress中钩子的概念。
组件中事件的特定应用由Yii定义为
如果要在不扩展基类的情况下中断正常的应用程序流,这很有用。
行为:行为只是Yii为您提供多重继承的方式,PHP5不支持这种继承,同时消除了多重继承的多功能同名问题。如果要继承A类和B类的属性和方法。扩展A类,然后将B类作为其行为附加,然后您也可以使用B类的所有方法。现在,如果A和B都包含一个名为'usefulfunction()'的函数,则对该函数的所有调用都将导致仅从A类执行'usefulfunction'。如果将A类和B类作为行为添加到类中,则“有用函数”调用将导致从首先附加的行为中执行方法。
P.S。 (我不是专家。如果我在任何地方都错了,请纠正我。)
答案 2 :(得分:2)
也许这个wiki上的额外页面可以提供更多洞察力: http://www.yiiframework.com/wiki/44/behaviors-events/