微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Symfony 3.4:在具有实例化的服务中使用应用程序参数

如何解决Symfony 3.4:在具有实例化的服务中使用应用程序参数

我不确定我尝试实现的目标是可能的还是好的做法。

我正在开发一个 Symfony 3.4 应用程序,该应用程序使用 Elastica 包将其 sql 数据库绑定到 Elasticsearch。 Elasticsearch 的端口、主机、密码存储app/config/parameters.yml 中。

我创建了一个使用 Elastica 执行许多操作的服务,包括对 elasticsearch 集群执行 GET 查询。为此,我需要在 host 中定义的 portapp/config/parameters.yml

我尝试在 services.yml 配置文件中绑定这些参数:

MyBundle\MyToolBox\QueryGenerator:
    arguments:
        $elasticHost: '%elastic_host%'
        $elasticPort: '%elastic_port%'

为了将它们传递给我的服务的构造函数

<?PHP

namespace MyBundle\MyToolBox;

use Elastica as Elastica;

class QueryGenerator extends Elastica\Query
{
    private Elastica\Client $client;
    private $host;
    private $port;

    public function __construct($elasticHost,$elasticPort)
    {
        parent::__construct();
        $this->client = new Elastica\Client();
        $this->host = $elasticHost;
        $this->port = $elasticPort;
    }
}

当我想使用此服务的方法并尝试实例化它时,我得到一个 TypeError

$qg = new QueryGenerator();
$qg->someMethod();
Type error: Too few arguments to function MyBundle\MyToolBox\QueryGenerator::__construct()

我肯定遗漏了一些东西,但我不知道是什么...... 感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。