我在Common下的function里面看到了这个定义。
const K_ADDON_PATH = './Addons/';
然后是在config的配置文件里面
'AUTOLOAD_NAMESPACE' => array('Addons' => K_ADDON_PATH),
注册了新的命名空间 ,对应加载了其实就是插件的类
public function run(&$params){
$data = S('hooks'); 读取缓存
if(!$data){ 读取缓存为空
$hooks = M('Hooks')->getField('name,addons'); 查找所有的钩子
foreach($hooks as $key=>$value){
if($value){ 如果钩子存在
$map['status'] = 1;
$names = explode(',',$value);
$map['name'] = array('IN', $names);
$data = M('Addons')->where($map)->getField('id,name'); 查找钩子对应的插件
if($data){
$addons = array_intersect($data, $names); 查询到的插件 钩子的插件列表
Hook::add($key,array_map('get_addon_class',$addons)); 加载钩子下面的插件
}
}
}
}
}
这里有2个Common的function.php下面有2个这个函数
/*
* 获取插件的类名称
*/
function get_addon_class($name){
$class = "Addons\\{$name}\\{$name}Addon";
return $class;
}
/*
* 处理插件钩子
*/
function hook($hook,$params=array()){
\Think\Hook::listen($hook,$params);
}
感觉好像也没有什么可以说的,另外就是2个表。直接去ONETHINK的那里拷贝出来
最佳答案