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 - 有没有更好的(轻量级)解决方案,可以在没有 jquery ui 的情况下使用 php 和 codeigniter 自动完成?

php - 没有代理的 Laravel BrowserSync

php - 按天分组和排序

php - 如何扩展 Laravel 的 Auth Guard 类?

model - Ember.js:如何保存模型

c# - 有选择地将要绑定(bind)的模型字段列入白名单

php - 相对定位导致的 HTML 布局额外间距

php - 通过选项卡更新补贴

php - 试图理解为什么 Laravel 的许多静态方法不被认为是不好的做法

java - 如何在 R 中保存 C5.0 模型并在另一个环境中加载