# 生命周期钩子
Blessing Skin 为插件提供了三个生命周期钩子,您可以利用这些生命周期钩子来为插件进行一些做准备或清理操作。所有的利用了钩子的代码都必须以数组的形式定义在插件根目录的 callbacks.php
文件里。
# callbacks.php
callbacks.php
文件应该返回一个键值对数组。键是生命周期事件的类,值是一个回调函数。回调函数的参数中可以带有含类型注解的参数,Blessing Skin 在执行这些钩子的时候会利用 Laravel 的服务容器去解析依赖并注入到参数中。 callbacks.php
大概像这样(已省略开头的 PHP 标记):
return [
App\Events\PluginWasEnabled::class => function (App\Services\PluginManager $manager) {
// 这里 $manager 就是 App\Services\PluginManager 的实例
}
];
# 插件被启用
当插件被启用之后,App\Events\PluginWasEnabled
事件就会被触发。利用这个钩子,您可以进行一些初始化工作,例如检查环境、向数据库中创建数据表(不过记得要在创建前检查数据表是否已存在,重复建表会报错)等。
# 插件被关闭
当插件被关闭之后,App\Events\PluginWasDisabled
事件就会被触发。
# 插件即将被删除
管理员在「插件管理」页面对插件执行删除操作后,此时插件还没有被删除,会先触发 App\Events\PluginWasDeleted
事件。这里的事件命名有误导,从事件的名称上,它的含义是「插件已被删除」,但实际上仅仅是向插件发送「删除」信号,此时插件还没有被删除,等到事件触发完成之后,插件才被真正删除。
利用这个钩子,您可以进行一些清理工作。不过,从实践的角度上看,您在插件被启用时创建了什么,并不意味着在插件被删除时就要清理什么。举个例子,假设我们现在有个验证用户信息的插件,这个插件在被启用时向数据库中创建了数据表,随后记录了用户验证的信息。假如在插件被删除时将这个数据表删除掉,那么下次使用这个插件时,原来已经验证的用户就要重新验证。