我在特征RegistersUsers
中有构造函数。我们可以在下面提到的路径中找到这个特性
vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php
这里的问题是,没有调用Constructor ......下面是代码。
private function __construct( \App\Caching\CacheCollection $cacheData )
{
$this->CacheCollection = $cacheData;
}
之前有人遇到类似问题吗?
答案 0 :(得分:1)
如果use
这个特征的类也有一个构造函数,那么特征提供的构造函数将不会被使用。覆盖优先级是Class方法覆盖Trait方法,它覆盖继承的方法(Class> Trait> Base)。如果类中有构造函数,则需要将其删除。
其他几点说明:
首先,如果可能的话,您不想修改vendor
目录中的文件。您在下次进行的任何更改都将在下次composer update
时被删除,除非您将vendor
目录提交到您的存储库,否则您将无法部署这些更改(不是一个好主意) )。您应该创建一个use
这个特征的新特征,并包含您的其他构造函数。然后在您的课程中,使用这个新特征,而不是RegistersUsers
特征。
其次,您已将构造函数声明为private
。如果这样做,您将只能从类中创建类的新实例(例如创建新实例的静态方法)。我不知道这是否是故意的,只是让你知道。