yii2属性、事件、行为是个什么概念。 [ 2.0 版本 ]
这个三个大类,有一个爹,叫组件。
1、属性 很好理解,就是类的一个部分,或叫成员。然后,通过php 魔术方法 __get
__set
在调用或设置时触发 访问类的成员,这个在yii2中常用到的。非常方便,好用。
2、行为 behavior 这个也好说。如:在入库或修改 操作可以定义 自动填充时间,我理解成方法执行前会自动执行的定义的代码。这块我用的不是很多,还不是很深入。请大神补充。
3、事件 这个事件我看文档,到现在也明白么回事。他的应用场景,什么时候用过。求大神解惑。。
4、谢谢回主。
最佳答案
-
确实不太好理解,主要是这些概念实在是又点绕,简单的理解呢,你可以把事件理解为钩子,举个例子,比如用户一登陆就自动发邮件和短信,或者数据库一执行sql就记录sql语句以便分析性能等,这是phalcon2的事件代码,你可以稍微理解下:
$eventsManager = new EventsManager(); // Create a database listener $dbListener = new MyDbListener(); // Listen all the database events $eventsManager->attach('db', $dbListener); $connection = new DbAdapter( array( "host" => "localhost", "username" => "root", "password" => "root", "dbname" => "phalcon2" ) ); // Assign the eventsManager to the db adapter instance $connection->setEventsManager($eventsManager); $connection->execute("SELECT * FROM items p WHERE p.types_id = 0"); foreach ($dbListener->getProfiler()->getProfiles() as $profile) { echo "SQL Statement: ", $profile->getSQLStatement(), "<br />"; echo "Start Time: ", $profile->getInitialTime(), "<br />"; echo "Final Time: ", $profile->getFinalTime(), "<br />"; echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "<br />"; }
yii2的事件也差不多的,首先得on绑定,类似于phalcon2的attach附加到那个组件,目前yii2支持全局函数,对象以及类,回调绑定,然后在triggers触发就可以了,至于更深层次的理解,得多测试代码了!希望能帮到您!!
其他 2 个回答
最爱红烧肉
注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
最后登录:2017-10-27
在线时长:69小时2分
- 粉丝11
- 金钱4740
- 威望30
- 积分5730