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

eventy logo


Laravel中的钩子

关于

操作是在代码的特定点上执行代码的片段。

安装

  1. 使用Composer安装
composer require soroushrah/action
  1. 将服务提供者添加到你的 config/app.php 文件中的 providers 数组。
    Soroush\Action\ActionServiceProvider::class,
    Soroush\Action\ActionBladeServiceProvider::class,
  1. config/app.php 中添加外观
    'Action' => \Soroush\Action\Facades\Action::class,

用法

操作

在代码的任何地方,你可以创建一个新操作,如下所示

\Action::action('my.hook', 'soroush');

第一个参数是钩子的名称,之后传递的所有内容都是参数。

要监听你的钩子,你将附加监听器。这些最好添加到你的 AppServiceProviderboot() 方法中。

例如,如果你想要钩入上述钩子,你可以这样做

\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创建