• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

jarektkaczyk/hookable: Laravel Eloquent hooks system

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

jarektkaczyk/hookable

开源软件地址(OpenSource Url):

https://github.com/jarektkaczyk/hookable

开源编程语言(OpenSource Language):

PHP 100.0%

开源软件介绍(OpenSource Introduction):

Sofa/Hookable

GitHub Tests Action Status stable Downloads

Hooks system for the Eloquent ORM (Laravel 5.2).

Hooks are available for the following methods:

  • Model::getAttribute
  • Model::setAttribute
  • Model::save
  • Model::toArray
  • Model::replicate
  • Model::isDirty
  • Model::__isset
  • Model::__unset

and all methods available on the Illuminate\Database\Eloquent\Builder class.

Installation

Clone the repo or pull as composer dependency:

composer require sofa/hookable:~5.2

Usage

In order to register a hook you use static method hook on the model: example.

Important Due to the fact that PHP will not let you bind a Closure to your model's instance if it is created in a static context (for example model's boot method), you need to hack it a little bit, in that the closure is created in an object context.

For example see the above example along with the class that encloses our closures in an instance scope that is being used there.

Signature for the hook closure is following:

function (Closure $next, mixed $payload, Sofa\Hookable\Contracts\ArgumentBag $args)

Hooks are resolved via Sofa\Hookable\Pipeline in the same order they were registered (except for setAttribute where the order is reversed), and each is called unless you return early:

// example hook on getAttribute method:
function ($next, $value, $args)
{
    if (/* your condition */) {
        // return early
        return 'some value'; // or the $value
    }

    else if (/* other condition */) {
        // you may want to mutate the value
        $value = strtolower($value);
    }

    // finally continue calling other hooks
    return $next($value, $args);
}

Contribution

All contributions are welcome, PRs must be tested and PSR-2 compliant.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap