相关疑难解决方法(0)

无法将类实例传递给构造函数

我有一个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)

php autoload laravel composer-php laravel-4

3
推荐指数
1
解决办法
2612
查看次数

标签 统计

autoload ×1

composer-php ×1

laravel ×1

laravel-4 ×1

php ×1