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