在RegisterUser特征中不调用构造函数:Laravel 5.2

时间:2016-02-22 18:34:06

标签: php laravel laravel-5.1 laravel-5.2

我在特征RegistersUsers中有构造函数。我们可以在下面提到的路径中找到这个特性

vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php

这里的问题是,没有调用Constructor ......下面是代码。

private function __construct( \App\Caching\CacheCollection $cacheData )
{
    $this->CacheCollection = $cacheData; 
}

之前有人遇到类似问题吗?

1 个答案:

答案 0 :(得分:1)

如果use这个特征的类也有一个构造函数,那么特征提供的构造函数将不会被使用。覆盖优先级是Class方法覆盖Trait方法,它覆盖继承的方法(Class> Trait> Base)。如果类中有构造函数,则需要将其删除。

其他几点说明:

首先,如果可能的话,您不想修改vendor目录中的文件。您在下次进行的任何更改都将在下次composer update时被删除,除非您将vendor目录提交到您的存储库,否则您将无法部署这些更改(不是一个好主意) )。您应该创建一个use这个特征的新特征,并包含您的其他构造函数。然后在您的课程中,使用这个新特征,而不是RegistersUsers特征。

其次,您已将构造函数声明为private。如果这样做,您将只能从类中创建类的新实例(例如创建新实例的静态方法)。我不知道这是否是故意的,只是让你知道。