У меня есть 2 класса, которые реализуют интерфейс, что-то вроде этого:
interface SomeInterface
{
public function init();
}
class ServiceOne implements SomeInterface
{
public function init() {
// ...
}
// ...
}
class ServiceTwo implements SomeInterface
{
public function init() {
// ...
}// ...
}
Я могу связать одно или другое с интерфейсом в Laravel, используя поставщика услуг, например:
$this->app->bind('<NAMESPACE>\SomeInterface', '<NAMESPACE>\ServiceOne');
или же:
$this->app->bind('<NAMESPACE>\SomeInterface', '<NAMESPACE>\ServiceTwo');
Но я хочу сделать это во время выполнения, основываясь на значении, установленном в БД, связанном с аутентифицированным пользователем, поэтому мне нужно схватить пользователя и определить, какой использовать.
Я попытался включить пользователя в метод загрузки поставщика услуг, а затем связать интерфейс, но не могу получить контроль над пользователем там. Всегда возвращает ноль.
Я также пытался использовать промежуточное программное обеспечение и пытаться получить пользователя непосредственно из запроса, но это также возвращает ноль.
Как бы это было сделано, так как я думал, что это будет довольно стандартная вещь?
Задача ещё не решена.
Других решений пока нет …