Вот смысл:
В Symfony по умолчанию службы являются общими, что означает, что один и тот же экземпляр работает для многих запросов, если вы хотите наоборот, вы можете изменить его в объявлении службы своей службы.как:
# config/services.yaml
services:
App\SomeNonSharedService:
shared: false
# ...
Но здесь все по-другому, ваша функция возвращает случайное значение, поэтому даже если вы используете один и тот же экземпляр службы, вы уверены, что у вас не будет одинакового результата, поэтому здесь выможет сделать 2 вещи:
1 - сохранить данные в сеансе в случае, если эта логика касается пользователя при входе в систему:
2 - сохранить данные в базу данных
Для двух решений вам нужно, чтобы exmaple проверил, существует ли уже значение в сеансе / БД, как в первом случае, это ваш сервис, который получит результат, и в то же время сохранитезначение же где-то, поэтому при следующем запросе он получит данные оттуда, где вы его собрали.
Вот пример, если вы используете Session:
# config/services.yaml
services:
App\Services\CodeService:
arguments:
- "@session"
ServiceCode:
<?php
namespace App\Services;
use Symfony\Component\HttpFoundation\Session\Session;
class CodeService
{
private $session;
public function __construct( Session $session)
{
$this->session = $session;
}
pulic function setVerificationId(){
if(isset(!$this->session->get('verificationCode'))){
$this->session->set('verificationCode', rand(100000, 999999));
}
return this->getVerificationId();
}
public function getVerificationId()
{
return $this->session->get('verificationCode');
}
}
Этот случай работает только в том случае, если вы используете сеанс, если нет, сделайте то же самое с помощью EntityManager для хранения данных в базе данных.
Надеюсьэто поможет вам.