如何解决Symfony 3.4:在具有实例化的服务中使用应用程序参数
我不确定我尝试实现的目标是可能的还是好的做法。
我正在开发一个 Symfony 3.4 应用程序,该应用程序使用 Elastica 包将其 sql 数据库绑定到 Elasticsearch。 Elasticsearch 的端口、主机、密码存储在 app/config/parameters.yml
中。
我创建了一个使用 Elastica 执行许多操作的服务,包括对 elasticsearch 集群执行 GET 查询。为此,我需要在 host
中定义的 port
和 app/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 举报,一经查实,本站将立刻删除。