php - 在 Laravel 中,我如何非静态地启动特征

标签 php laravel model eloquent traits

为什么我们只有这种静态方式来在 Laravel 中启动 traits:

static function bootMyTrait ()
{...}

有什么方法可以引导特征并在引导函数中包含模型实例吗?像这样:

function bootMyTrait ()
{
    if ($this instanceOf awesomeInterface)
    {
        $this->append('nice_attribute');
    }
}

我需要这个AF,很长一段时间都没有找到任何解决方案。

最佳答案

Laravel 5.7你可以使用 trait initializers,而不是 trait booters。我有同样的任务并且能够像这样解决它:

public function initializeMyTrait()
{
    if ($this instanceOf awesomeInterface)
    {
        $this->append('nice_attribute');
    }
}

关于php - 在 Laravel 中,我如何非静态地启动特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586019/

相关文章:

php - Laravel 5 : Having trouble updating related model values by using save/push methods, 他们就是不工作

php - 停止处理并评估 foreach 循环中的下一个值

php - 将 PHP crypt() 结果存储在数据库中是否安全?

PHP artisan migrate 不会迁移所有表

asp.net-mvc-3 - 为什么有两个类, View 模型和域模型?

c# - 绑定(bind)对象永远不会为空

asp.net-mvc - ASP.NET MVC : HOWTO: Update database after editing multiselectlist (listbox)

php - Redis如何存储保留键顺序的数组

php - SQL 按日期排序 (D-M)

javascript - usemin 为输入 Assets 文件使用了错误的目录