<?php
namespace eoc\library;
class Hook
{
private static $instance;
/**
* @var string hook文件存放目录
*/
protected static $hook;
//防止类被克隆
private function __clone()
{
trigger_error('Clone is not allow!',E_USER_ERROR);
}
//防止类重复实例化
public static function getInstance()
{
if (!(self::$instance instanceof self)) {
self::$instance = new self;
}
return self::$instance;
}
/**
* @param $class
* @param $function
* @param null $params 运行插件
* @param int 插件模式 0 工厂模式 1单例模式
*/
public function runHook($class, $function, $hookType = 0, $params = null)
{
//设置hook类存放目录
$hookPath = APP_PATH . DIRECTORY_SEPARATOR . get_config('plugin_dir') . DIRECTORY_SEPARATOR;
//设置后缀
$postfix = '.class.php';
$result = include($hookPath . $class . DIRECTORY_SEPARATOR . $class . $postfix);
if (!$result) {
setErrorInfo($class . '插件不存在');
}
switch ($hookType) {
case 0:
$object = new $class();
$object->$function($params);
break;
case 1:
//$object = $class::getInstance();
dump($params);
// $object::$function($params);
break;
default:
# code...
break;
}
}
}