亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

事件注解

適用場(chǎng)景

模型事件類似于 ThinkPHP 框架模型的模型事件,可用于在數(shù)據(jù)寫入數(shù)據(jù)庫(kù)之前做一些預(yù)處理操作。

模型事件是指在進(jìn)行模型的寫入操作的時(shí)候觸發(fā)的操作行為,包括調(diào)用模型對(duì)象的 insertdeleteupdate 方法以及對(duì)實(shí)體對(duì)象初始化時(shí)觸發(fā)。

模型類支持 OnInitialize、OnInsert、OnDelete、OnUpdate 事件。

事件行為注解 描述
OnInitialize 實(shí)體被實(shí)例化時(shí)觸發(fā)
OnInsert 新增前
OnDelete 刪除前
OnUpdate 更新前

使用示例

聲明事件注解

在模型類中可以通過(guò)注解及定義類方法來(lái)實(shí)現(xiàn)事件注解的聲明,如下所示:

<?php
declare(strict_types=1);

namespace EasySwoole\FastDb\Tests\Model;

use EasySwoole\FastDb\AbstractInterface\AbstractEntity;
use EasySwoole\FastDb\Attributes\Hook\OnInitialize;
use EasySwoole\FastDb\Attributes\Hook\OnInsert;
use EasySwoole\FastDb\Attributes\Hook\OnDelete;
use EasySwoole\FastDb\Attributes\Hook\OnUpdate;
// ...

/**
 * @property int    $id
 * @property string $name
 * @property int    $status
 * @property int    $score
 * @property int    $create_time
 */
#[OnInitialize('onInitialize')]
#[OnInsert('onInsert')]
#[OnDelete('onDelete')]
#[OnUpdate('onUpdate')]
class User extends AbstractEntity
{
    // ...

    public function onInitialize()
    {
        // todo::
    }

    public function onInsert()
    {
        if (empty($this->status)) {
            return false;
        }
        if (empty($this->create_time)) {
            $this->create_time = time();
        }
    }

    public function onDelete()
    {
        // todo::
    }

    public function onUpdate()
    {
        // todo::
    }
}

上面定義了 OnInitialize、OnInsert、OnDelete、OnUpdate 事件注解,并在注解中通過(guò)形如 #[OnInitialize('onInitialize')] 的方式給 OnInitialize 注解傳入?yún)?shù),給對(duì)應(yīng)的事件行為設(shè)置事件被觸發(fā)時(shí)執(zhí)行的回調(diào) onInitialize、onInsertonDeleteonUpdate。

設(shè)置的回調(diào)方法會(huì)自動(dòng)傳入一個(gè)參數(shù)(當(dāng)前的模型對(duì)象實(shí)例),并且 OnInsertOnDeleteOnUpdate 事件的回調(diào)方法(onInsert 、onDelete、onUpdate) 如果返回 false,則不會(huì)繼續(xù)執(zhí)行。

使用

$user = new User(['name' => 'EasySwoole', 'id' => 1000]);
$result = $user->insert();
var_dump($result); // false,返回 false,表示 insert 失敗。
主站蜘蛛池模板: 日韩精品视频在线看 | 国产精品自产拍在线观看桃花 | 国产在线2| 国产成人精品一区二区仙踪林 | 一级毛片视频 | 欧美日韩国产一级片 | 成人激情视频在线观看 | 欧美日韩免费一区 | 一级片在线免费 | 国产一卡| 国产午夜三级 | 免费不卡av| 凹凸日日摸日日碰夜夜爽孕妇 | 亚洲在线电影 | 日韩欧美中文在线 | 亚洲精品视频免费在线观看 | 天天综合av | 欧美日韩一区二区三区在线 | 久久久久久国产视频 | 粉嫩欧美一区二区三区高清影视 | 亚洲精品一区二区三区不 | 91精品国产亚洲 | 爱搞逼综合网 | 日韩一区二区三区在线播放 | 欧美日韩亚洲国产 | 日韩wuma| 久久特级毛片 | 成人性生交大片免费看2 | 在线观看精品黄av片免费 | 亚洲色在线视频 | 毛片无限看 | 国产美女精品在线 | 成年人视频在线观看免费 | 图片区小说区综合区第一页 | 国产淫视 | 成人免费区一区二区三区 | 特黄一级毛片 | 国产日韩视频在线 | 成人在线观看网站 | 亚洲精品欧美一区二区三区 | 久精视频|