#php-7.1 #symfony-4.4
#php-7.1 #symfony-4.4
Вопрос:
Я пытаюсь реализовать внедрение зависимостей в Symfony.
Я создал класс с именем Token следующим образом:
class Token
{
private $token;
private $key;
public function __construct(string $key)
{
$this->key = $key;
$this->settoken();
}
public function getToken(): string
{
return $this->token;
}
public function setToken(string $newString)
{
$token = $newString . '-' . $this->key;
return $this;
}
}
В конструкции у меня есть ключ, который определен в services.yml
Теперь я внедрил этот класс в другой контроллер, как показано ниже.
$this->token->setToken('123456789');
dd($this->token->getToken())
Но это выдает мне ошибку «Слишком мало аргументов для функции setToken()». Я думаю, это потому, что в моей конструкции класса Token я уже передал ключевой аргумент.
Я не уверен, как правильно это использовать.
Кто-нибудь, пожалуйста, может мне помочь.
Спасибо.
Ответ №1:
Я вижу проблему в классе Token. Если вы посмотрите на __construct, вы вызываете $this->settoken()
public function __construct(string $key)
{
$this->key = $key;
$this->settoken();
}
А ниже приведен метод setToken, который имеет строку в качестве обязательного аргумента. Вот почему это выдает ошибку.
Класс должен выглядеть следующим образом :
class Token {
private $token;
private $key;
public function __construct(string $key)
{
$this->key = $key;
}
public function getToken(): string
{
return $this->token;
}
public function setToken(string $newString): Token
{
$this->token = $newString . '-' . $this->key;
return $this;
}
}