soroushrah / action
此包的最新版本(dev-master)没有可用的许可证信息。
类似Wordpress钩子的操作和事件
dev-master
2021-06-13 10:04 UTC
This package is auto-updated.
Last update: 2024-09-13 16:57:15 UTC
README
Laravel中的钩子
关于
操作是在代码的特定点上执行代码的片段。
安装
- 使用Composer安装
composer require soroushrah/action
- 将服务提供者添加到你的
config/app.php
文件中的 providers 数组。
Soroush\Action\ActionServiceProvider::class, Soroush\Action\ActionBladeServiceProvider::class,
- 在
config/app.php
中添加外观
'Action' => \Soroush\Action\Facades\Action::class,
用法
操作
在代码的任何地方,你可以创建一个新操作,如下所示
\Action::action('my.hook', 'soroush');
第一个参数是钩子的名称,之后传递的所有内容都是参数。
要监听你的钩子,你将附加监听器。这些最好添加到你的 AppServiceProvider
的 boot()
方法中。
例如,如果你想要钩入上述钩子,你可以这样做
\Action::addAction('my.hook', function($what) {
echo 'Hello '. $what;
}, 20, 1);
再次强调,第一个参数必须是钩子的名称。第二个是回调函数。第三个是优先级。第四个是接受的参数数量(默认为1)。
在Blade中使用
添加与上面操作示例中相同的作用
@action('my.hook', 'awesome')
添加动态关系模型
对于添加不在你的模块中的模型的关系,你应该在你的所有项目模型中使用 HasDynamicRelation 特性。
class MyModel extends Model {
use HasDynamicRelation;
}
然后在 providers 上添加如上例所示的动态关系
MyModel::addDynamicRelation('some_relation', function(MyModel $model) {
return $model->hasMany(SomeRelatedModel::class);
});
致谢
- 由Soroush Rahmani创建