YurunPHP中支持定义事件、实现事件,有需要的话可以使用事件驱动开发或插件模式开发。 ## 相关配置项 #### PLUGIN_FOLDER 插件目录文件夹名,默认为Plugin ## 插件机制 1、在项目配置目录中创建一个plugin.php 2、配置文件格式是一维数组,每个成员是字符串,代表插件名称 ~~~ <?php return array( 'Comment', 'UserGroup' ); ~~~ 3、框架会根据常量APP_PLUGIN路径自动加载里面的插件。 4、插件入口是【项目目录/Plugin/插件名/插件名.php】,所有的绑定事件都写在这里面。 ## 事件类方法 ####定义事件 ~~~ Event::trigger($event, &$params=array()) ~~~ | 参数名 | 描述 | | -- | -- | | $event | 事件名称 | | $params | 向处理事件的方法传递的参数 | ~~~ // 框架代码:框架初始化完成事件,无参数 Event::trigger('YURUN_FRAMEWORK_LOAD_COMPLETE'); // 向处理事件的方法传递参数 $data = array('name'=>'宇润'); Event::trigger('EVENT_USER_LOGIN',$data); ~~~ ####绑定事件 ~~~ Event::register($event, $callback, $first=false) ~~~ | 参数名 | 描述 | | -- | -- | | $event | 事件名称 | | $callback | 回调方法 | | $first | 是否将该回调方法移到处理的首位 | ~~~ // 在框架加载完成时做一些事情 Event::register('YURUN_FRAMEWORK_LOAD_COMPLETE', 'onYurunFrameworkLoadComplete'); function onYurunFrameworkLoadComplete() { echo '嘿嘿嘿!'; } ~~~ 当然也支持闭包 ~~~ // 在框架加载完成时做一些事情 Event::register('YURUN_FRAMEWORK_LOAD_COMPLETE', function() { echo '嘿嘿嘿!'; } ); ~~~