//注册钩子 参数名相同我要写如何写一个function 来对不同的事件做触发事件。
$hooks_array = array('register_success' => 'user_id','ucp_login_success' => 'user_id','acp_login_success' => 'user_id');//事件=>参数
add_hooks($this->apps_name, $hooks_array);public function user_id($param_ary)
{
//这里如何写判断相同参数对应的不同事件 如何判断
}
$hooks_array = array('register_success' => 'user_id','ucp_login_success' => 'user_id','acp_login_success' => 'user_id');//事件=>参数
add_hooks($this->apps_name, $hooks_array);public function user_id($param_ary)
{
//这里如何写判断相同参数对应的不同事件 如何判断
}
解决方案 »
- 一个很基础的问题,进来帮忙看看
- discuz x1.5的导航栏论坛按钮链接怎么改?
- ThinkPHP 关闭调试模式
- wampserver2.2a安装后运行出现以下错误,怎样解决
- 我在windows2008并且是64位的操作系统下安装PHP,请问PHP有64位的吗
- 高手!请帮忙 一个正则:字符串中包含a、b、c、d、e、f这6个字母中的任意4个或5个字母
- 这是PHP做的吗?
- 我自已做的翻页功能,但是有一个问题解决不了,请朋友帮帮忙。
- 用户反映打开网站弹出输入账号和密码的对话框,怀疑是中了401跳转。该怎么解决呢?
- 急!!!pop服务器怎么分离邮件主体和附件
- 转换为伪静态的问题
- 网易开发平台分页问题
就是插件机制,任何一个成熟点的代码都会涉及到,实现各有不同,你可以找些代码来阅读下。
原理其实很简单,比如你注册个新用户
伪代码如下:PHP code
//表示引入user类型的插件,简单来说,user是个目录,目录下有特定规则的类文件名,include它们,实例化下。
$plugin = & Factory::get('plugin','user');
if(!$_POST['user_id'])
{//添加注册用户
//表示触发beforeUserRegister事件(预留钩子),也就是user目录下所有类文件里的beforeUserRegister方法,$_POST作为参数传进去.
$re = $plugin->trigger('beforeUserRegister',array($_POST));
//处理注册信息
doRegister($_POST);
//原理同上
$re = $plugin->trigger('afterUserRegister',array($_POST));
}
插件有个问题是执行顺序的设定,有些用数据库(后台可管理,比如joomla),有些直接用文件.
意思是,比如/plugin/user/ 目录下有2个插件文件,也就是上面代码中会触发的两个插件.
它们是
plug_check.php
plug_auth.php
它们内部的类名和文件名是挂钩的,这样才可以include文件的同时,实例化他们.当然你不用类文件的方式来实现插件也可以,只要你设计好一定的规范.
plug_check.php:PHP codeclass PlugCheck extends Plugin
{
function beforeUserRegister($post){}
function afterUserRegister($post){}
}
plug_auth.php:PHP codeclass PlugAuth extends Plugin
{
function beforeUserRegister($post){}
function afterUserRegister($post){}
}那么这时候问题就出来了,在处理注册之前,我是先触发plug_check.php文件的PlugCheck类的beforeUserRegister,还是先触发另外一个?这个就需要你去配置了.