首页 > 解决方案 > 无法自动装配服务“X”:方法“__construct()”的参数“$param”是类型提示的“字符串”,您应该明确配置其值

问题描述

我有一个带有这个构造函数的类:

    public function __construct(string $username, string $database, string $password, string $host)
    {
        $this->username = $username;
        $this->database = $database;
        $this->password = $password;
        $this->host = $host;
    }

在我的服务配置文件中,我添加了:

App\DataFixtures\Migration\Database\DatabaseConnector:
      arguments:
          $username: '%env(USERNAME_PROD)%'
          $password: '%env(PASSWORD_PROD)%'
          $database: '%env(DATABASE_PROD)%'
          $host: '%env(HOST_PROD)%'

我已经尝试禁用和启用自动配置和自动装配,但没有解决问题。

我的配置文件真的被加载了。

标签: symfonyautowired

解决方案


您应该明确配置其值

...也许在构造方法中,而不是将其作为参数传递。看看Dotenv 组件

如果您的数据库凭据已经存储在 .env 中,您可以直接从类的构造函数中访问:

public function __construct()
{
    $this->username = $_ENV['USERNAME_PROD'];
    $this->database = $_ENV['DATABASE_PROD'];
    $this->password = $_ENV['PASSWORD_PROD'];
    $this->host = $_ENV['HOST_PROD'];
}

推荐阅读