Size: a a a

2020 March 15

АС

Альберт Степанцев in PHP
вам выше дали нормальный совет
источник

АС

Альберт Степанцев in PHP
по интерфейсу резолвить сервис
источник

АС

Альберт Степанцев in PHP
сервис внутри себя имеет фабричный метод
источник

АС

Альберт Степанцев in PHP
и тот уже отдает нужный объект
источник

АС

Альберт Степанцев in PHP
это тоже костыль, но менее корявый
источник

АС

Альберт Степанцев in PHP
в фабричный метод лучше явно передать объект-пользователя
источник

АС

Альберт Степанцев in PHP
разводите, блин, какую-то сраную магию со своим Тейлором
источник

EG

Egor Gruzdev in PHP
Dmitry Eliseev
Инжектите фабрику или локатор и из неё дёргайте $this->factory->forGuest() и forUser()
т.е. по DI пользователя лучше не гонять и не делать из DI factory
а из DI получить factory с зависимостью от контейнера и в зависимости от пользователя делаем:
$interfaceClass = $factory->getClassByUser($user);
источник

SM

Sergey Milegov in PHP
$this->app->bind(Email::class, function ($app) {
   return $app['request']->user()->getEmail();
});

😂
источник

АС

Альберт Степанцев in PHP
Egor Gruzdev
т.е. получается и проброс текущего пользователя через DI также допустимо, т.е.
        $this->app->bind(Interface::class, function ($app) {
           return new Class1($app['request']->user());
       });

или в данном случае лучше пробрасывать не пользователя, а \Illuminate\Auth\AuthManager
вопрос возникает постоятнно: "Как правильно пробросить в класс текущего пользователя?"
Варианты, что возникают:
1) проталкивать его через метод контроллера, как параметр для методов сервиса
2) притянуть через DI, но как, если конечно это приветствуется
как правильно?
получить сервис, занимающийся авторизацией
у него узнать - авторизован ли пользователь
источник

DE

Dmitry Eliseev in PHP
Egor Gruzdev
т.е. по DI пользователя лучше не гонять и не делать из DI factory
а из DI получить factory с зависимостью от контейнера и в зависимости от пользователя делаем:
$interfaceClass = $factory->getClassByUser($user);
Либо в сам сервис инъектить Auth, либо доставать сервис из фабрики/локатора по user->id. Но никак не request.
источник

АС

Альберт Степанцев in PHP
ну да
протечка запроса куда-то, кроме контроллера - вообще сильно-сильно плохо
источник

АС

Альберт Степанцев in PHP
просто адово плохо
источник

DM

Dmitry MiksIr in PHP
services:
   App\MyService:
       factory:   ['@App\MyServiceFactory', createMyServiceFactory]
       arguments: ['@security.context']

😉
источник
2020 March 16

EG

Egor Gruzdev in PHP
Dmitry MiksIr
services:
   App\MyService:
       factory:   ['@App\MyServiceFactory', createMyServiceFactory]
       arguments: ['@security.context']

😉
Symfony?
источник

DM

Dmitry MiksIr in PHP
Egor Gruzdev
Symfony?
угу
источник

EG

Egor Gruzdev in PHP
// src/Service/ExampleService.php
// ...

use Symfony\Component\Security\Core\Security;

class ExampleService
{
   private $security;

   public function __construct(Security $security)
   {
       // Avoid calling getUser() in the constructor: auth may not
       // be complete yet. Instead, store the entire Security object.
       $this->security = $security;
   }

   public function someMethod()
   {
       // returns User object or null if not authenticated
       $user = $this->security->getUser();
   }
}
в случае с Laravel это будет AuthManager, скорее всего
источник

EG

Egor Gruzdev in PHP
источник

K

K1ng in PHP
Hello everyone, does anyone know curl php?
источник

U

Unknown in PHP
K1ng
Hello everyone, does anyone know curl php?
Very unlikely
источник