代码目录结构如下:
页面效果如下:
function.php
<?php
function addAction($hook,$actionFunc){
global $emHooks;
if(!@in_array($actionFunc,$emHooks[$hook])){
$emHooks[$hook][]=$actionFunc;
}
return true;
}
function doAction($hook){
global $emHooks;
$args=array_slice(func_get_args(),1);
if(isset($emHooks[$hook])){
foreach($emHooks[$hook] as $function){
call_user_func_array($function,$args);
}
}
}
在页面上设置钩子并埋点,我这里以index.php为例
<?php
define("APP_ROOT",str_replace("\\","/",dirname(__FILE__))."/");
require ("function.php");
function load_plugins_file($plugin){
if(is_string($plugin) && preg_match("/^[\w\-\/]+$/",$plugin) && file_exists(APP_ROOT."plugins/".$plugin.".php")){
require (APP_ROOT."plugins/".$plugin.".php");
}
}
$pluginsName=array("check","login");
foreach ($pluginsName as $plugin){
load_plugins_file($plugin);
}
doAction("exp");
echo "<p>index 页面</p>";
<?php
function check(){
echo "<p>check 插件被调用</p>";
}
addAction("exp","check");
<?php
function login(){
echo "<p>login 插件被调用</p>";
}
addAction("exp","login");