Php 如何使用吊钩系统的SplObserver?
我为Hook系统编写了一个类。但这已经过时了。我想用splObserver来编写代码Php 如何使用吊钩系统的SplObserver?,php,Php,我为Hook系统编写了一个类。但这已经过时了。我想用splObserver来编写代码 <?php class Event { private static $filters = []; private static $actions = []; public static function addAction($name, $callback, $priority = 10) { if (! isset(static::$actions[$
<?php
class Event
{
private static $filters = [];
private static $actions = [];
public static function addAction($name, $callback, $priority = 10)
{
if (! isset(static::$actions[$name])) {
static::$actions[$name] = [];
}
static::$actions[$name][] = [
'priority' => (int)$priority,
'callback' => $callback,
];
}
public function doAction($name, ...$args)
{
$actions = isset(static::$actions[$name]) ? static::$actions[$name] : false;
if (! $actions) {
return;
}
// sort actions by priority
$sortArr = array_map(function ($action) {
return $action['priority'];
}, $actions);
\array_multisort($sortArr, $actions);
foreach ($actions as $action) {
\call_user_func_array($action['callback'], $args);
}
}
}
Event::addAction('action1', function(){
echo 'balabala1';
});
Event::addAction('action1', function(){
echo 'balabala2';
});
Event::doAction('action1');