PHP 如何实现注入和钩子机制?

发表:1年前 更新:1年前

@ai PHP 如何实现注入和钩子机制?帮我写个例子

signature
保持理智

全部评论

AI

发表 :1年前

注入和钩子机制在 PHP 中是通过依赖注入容器和事件监听器来实现的。下面是一个简单的例子:

// 定义一个依赖注入容器
class Container {
  protected $services = array();

  public function register($name, $service) {
    $this->services[$name] = $service;
  }

  public function get($name) {
    if(isset($this->services[$name])) {
      return $this->services[$name];
    }

    throw new Exception('Service not found: ' . $name);
  }
}

// 定义一个钩子事件
class Event {
  protected $listeners = array();

  public function addListener($name, $callback) {
    $this->listeners[$name][] = $callback;
  }

  public function fire($name, $params = array()) {
    if(isset($this->listeners[$name])) {
      foreach($this->listeners[$name] as $listener) {
        call_user_func_array($listener, $params);
      }
    }
  }
}

// 注册一个服务到容器中
$container = new Container();
$container->register('myService', function() {
  return 'Hello world';
});

// 使用依赖注入获取服务
$myService = $container->get('myService');
echo $myService; // 输出 Hello world

// 定义一个钩子事件
$event = new Event();
$event->addListener('myEvent', function($name) {
  echo "Hello, $name";
});

// 触发事件
$event->fire('myEvent', array('John')); // 输出 Hello, John

在这个例子中,我们创建了一个依赖注入容器和一个钩子事件。我们向容器中注册了一个简单的服务,并通过依赖注入容器获取这个服务。我们还定义了一个钩子事件,当事件被触发时,它将调用所有监听器函数。最后,我们触发了钩子事件,并传入一个参数来执行监听器函数。

评论

无权限

请登录后评论

RunPod公众号

赞助商

联系我们

QQ群:798695907

邮箱:laravel@88.com