我有一个User雄心勃勃的模型,该模型在其构造函数中包含UserMailer类的实例,但出现此错误
Argument 1 passed to User::__construct() must be an instance of TrainerCompare\Mailers\UserMailer, none given, called in /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 631 and defined
Run Code Online (Sandbox Code Playgroud)
我理解该错误,但无法弄清楚我做错了什么,但是我不太了解命名空间和composer类映射与psr0自动加载的关系。我记得使用过composer dump-autoload,所以不是
相关文件夹结构
composer.json
app/
models/
User.php
TrainerCompare/
Mailers/
Mailer.php
UserMailer.php
Services/
Validation/
Run Code Online (Sandbox Code Playgroud)
composer.json自动加载部分。psr-0部分是从我添加验证服务后开始的,您可以在TrainerCompare /中看到这些类,它们的工作效果很好。我按照我遵循的教程将app / TrainerCompare / Mailers添加到类映射中,以加载mailer类
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/tests/helpers",
"app/TrainerCompare/Mailers"
],
"psr-0":{
"TrainerCompare": "app/"
}
}
Run Code Online (Sandbox Code Playgroud)
User.php
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
use TrainerCompare\Mailers\UserMailer as Mailer;
class User extends BaseModel implements UserInterface, RemindableInterface
{
protected $mailer;
public …Run Code Online (Sandbox Code Playgroud)