phpooya/events

事件基础系统。

dev-master 2019-08-15 17:48 UTC

README

新的层级架构以保持您的项目设计模式。

安装

composer require phpooya/events

如何使用

如示例所示,将EventTrait添加到您的类中,并在您的代码中使用$this->trigger()

<?php
use phpooya\events\EventTrait;
use phpooya\events\EventData;

class UserModel
{
    use EventTrait;

    public $name;
    public $email;
    public $password;

    public function find() : array
    {
        $eventData = new EventData($this);
        $this->trigger($eventData, "before");
        
        $returnData = []; //retrieve data from DB...
        
        $this->trigger($eventData, "after");
        return $returnData;
    }

    public function save() : bool
    {
        $eventData = new EventData($this);
        $this->trigger($eventData, "before");
        
        $returnData = true; //save data in DB...
        
        $this->trigger($eventData, "after");
        return $returnData;
    }
}

UserModel::on('before.find', function($data){ /* do something you want... */ });
UserModel::on('after.find', function($data){ $data->target->password = "********"; });
UserModel::on('after.save', function($data){ /* add log for error... */ });