Как использовать getter

#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;
}
  

}