我有类load.php来处理我的应用程序中的所有内容
require_once('app/load.php');
$micro = New load($mainroute);
$micro->init_plugins();
在_construnc中的类中有插件属性:
$this->plugins = json_decode(file_get_contents(ABSPATH.'micro/'.ROOTPATH.'config/plugins.json'), true);
并且有方法init_plugins():
public function init_plugins() {
$plugins = $this - > plugins;
$micro = $this;
foreach($plugins as $plugin) {
if ($plugin['active'] == true) {
include('plugins/'.$plugin['name'].'.php');
}
}
}
有示例插件:
require(ABSPATH.'vendor/autoload.php');
use DebugBar\StandardDebugBar;
$debugbar = new StandardDebugBar();
$debugbarRenderer = $debugbar - > getJavascriptRenderer();
$micro - > add_hook('head', 'debug_bar_render_head');
$micro - > add_hook('body_end', 'debug_bar_shutdown');
$micro - > add_hook('body_end', 'debug_bar_render_body');
function debug_bar_render_head() {
global $debugbarRenderer;
echo $debugbarRenderer - > renderHead();
}
function debug_bar_render_body() {
global $debugbarRenderer;
echo $debugbarRenderer - > render();
}
function debug_bar_shutdown() {
global $debugbar;
global $micro;
$debugbar["messages"] - > addMessage("memory: ".memory_get_usage());
$debugbar["messages"] - > addMessage("time: ".$micro - > endtime());
}
首先,这不起作用,我需要信息我错了吗?
我希望一切都在类加载,处理包括钩子在内的所有事情:
public function add_hook($hook, $function, $parameters) {
array_push($this - > micro_hooks[$hook], array('function' = > $function, 'parameters' = > $parameters));
}
public function do_hook($hook) {
foreach($this - > micro_hooks[$hook] as $action) {
call_user_func_array($action['function'], $action['parameters']);
}
}
public function dump_hooks() {
var_dump($this - > micro_hooks);
}
我想要的流程是:
$micro = New load($routes);
$micro-> init_something();
$micro-> init_plugins();
我希望插件创建者已经拥有$ micro对象并在那里添加钩子。
我的问题是: