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/

相关文章:

python - Django OneToOneField允许在线引用

javascript - 如何将使用 CSS 更改的图像保存到数据库

php - Amazon Cloudfront 私有(private)分发 - 指向 CSS 中的图像的链接

php - PHP 函数中的静态变量是否跨实例全局?

php - 提取PDO错误消息

php - 在 Laravel Eloquent 模型中使用特殊的联合函数

ruby-on-rails - Rails 方法在 View 中不可用

php - 如何使用 Laravel Passport 在查询字符串而不是 header 中访问 token 来验证请求?

php - laravel 循环中的多个 where 子句

java - 使用 dao 接口(interface)和实现实现通用抽象实体类