#php #symfony
#php #symfony
Вопрос:
При обновлении с Symfony 3.4 до 4.1, когда я использую php bin / console, я получил следующую ошибку.
Я хочу принимать параметры в виде ссылки на URL.
В чем причина?
https://symfony.com/blog/new-in-symfony-4-1-getting-container-parameters-as-a-service
Код ошибки
Unused binding "$projectDir" in service "common.parameterService".
config/services.yaml
parameters:
parameter_name: XXX
services:
_defaults:
autowire: false
autoconfigure: false
public: false
bind:
$projectDir: '%kernel.project_dir%'
common.parameterService:
class: AppBundleModelServiceParameterService
arguments: [ "@service_container" ]
AppBundle/Model/Service/ParameterService.php
use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface;
use AppBundleModelServiceBaseService;
/**
*
*/
class ParameterService extends BaseService
{
private $params;
public function __construct(ParameterBagInterface $params)
{
$this->params = $params;
}
/**
*
* @param string
* @return mixed
*/
public function getParameter()
{
return $this->params->get('parameter_name');
}
Комментарии:
1. Функция автоматического подключения с
autowire: false
помощью ?2. @scottie320 — Это попытка заменить существующий устаревший класс параметров? Если это так, то я боюсь, что вы идете по неверному пути. В классах, которые в настоящее время содержат вызовы Parameters::getParameter , вы захотите ввести любые параметры или службы, которые им нужны.
3. @SubCore Это верно. Из старого Symfony, который я обновляю, поэтому я не думаю, что мне нужна функция autowire.
4. @Cerad Ты прав. Означает ли это, что вы можете получить ее, установив параметры в Parameters :: getParameter ?
5. Пожалуйста, не вводите service_container :). При автоматическом подключении все зависимости будут введены автоматически
Ответ №1:
Это означает, что вы объявили это:
bind:
$projectDir: '%kernel.project_dir%'
но не ввели $projectDir
ни в ParameterService
, ни в какие-либо другие службы в этом файле.
Вы можете удалить эти две строки:
bind:
$projectDir: '%kernel.project_dir%'
Комментарии:
1. спасибо за ваш ответ. Конечно, если вы удалите bind, ошибка исчезнет. Однако то, чего я хочу добиться, — это получить параметры. Правильно ли устанавливать $ ProjectDir в Service? Я пробовал, но это не работает.