2016-07-06 16:26:36 9891次浏览 3条回答 0 悬赏 10 金钱

这个三个大类,有一个爹,叫组件。
1、属性 很好理解,就是类的一个部分,或叫成员。然后,通过php 魔术方法 __get __set 在调用或设置时触发 访问类的成员,这个在yii2中常用到的。非常方便,好用。

2、行为 behavior 这个也好说。如:在入库或修改 操作可以定义 自动填充时间,我理解成方法执行前会自动执行的定义的代码。这块我用的不是很多,还不是很深入。请大神补充。

3、事件 这个事件我看文档,到现在也明白么回事。他的应用场景,什么时候用过。求大神解惑。。

4、谢谢回主。

最佳答案

  • unix2000 发布于 2016-07-10 23:04 举报

    确实不太好理解,主要是这些概念实在是又点绕,简单的理解呢,你可以把事件理解为钩子,举个例子,比如用户一登陆就自动发邮件和短信,或者数据库一执行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触发就可以了,至于更深层次的理解,得多测试代码了!希望能帮到您!!

    , 觉得很赞
  • 回答于 2016-07-07 11:16 举报

    纠正下楼主的

    类的成员包括类属性和类方法 属性属于成员
    事件可以参考js 当你触发了什么事件 然后执行什么动作

  • 回答于 2017-09-29 10:11 举报

    事件:就是观察者模式!!!

    设计模式而已,只是把名字叫 “事件”,
    你也可以设计类似的,取名叫 “大事件”,“事件大”。。。

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
最爱红烧肉
副总裁

最爱红烧肉

注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
  • 粉丝11
  • 金钱4740
  • 威望30
  • 积分5730

热门问题