Size: a a a

2020 March 15

AM

Artem Molotov in PHP
начать с ноутпада
источник

AM

Artem Molotov in PHP
pLow
я уже просто написал все на голом php, осталось чпу доделать, и тут я встрял
лол
источник

MM

Maksim Masiukevich in PHP
через неделю вернётся, расскажет за успехи
источник

EG

Egor Gruzdev in PHP
Maksim Masiukevich
через неделю вернётся, расскажет за успехи
за что вы его так?
источник

SM

Sasha Mikhlyaev in PHP
"за убеждения" © ДМБ
источник

AM

Artem Molotov in PHP
Egor Gruzdev
за что вы его так?
говорят, что описание канала нужно читать
источник

AM

Artem Molotov in PHP
(правда я сам это крайне редко делаю, такой уж интерфейс телеги)
источник

EG

Egor Gruzdev in PHP
Коллеги, тогда вопрос по уровню группы, правильно ли через DI (IoC контейнер) "резолвить" реализацию интерфейса в зависимости от авторизации пользователя?
источник

АС

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

EG

Egor Gruzdev in PHP
нет, как то безосновательно, что именно мы этим нарушаем?
источник

DK

Dmitrij Kravchenko in PHP
Egor Gruzdev
Коллеги, тогда вопрос по уровню группы, правильно ли через DI (IoC контейнер) "резолвить" реализацию интерфейса в зависимости от авторизации пользователя?
Именно авторизации в плане политик? Или просто точки входа ?
источник

АС

Альберт Степанцев in PHP
В этом случае в функции резолвинга (напомню - на входе имя, на выходе - объект) вам придется как-то понимать, что есть такая НЁХ под названием "пользователь"
Как это понять? Очевидно, обратившись либо к "статическому фасаду", либо к "объекту приложения"
То есть вы получаете либо Ларавель, либо Yii

и то, и другое - зашквар
источник

АС

Альберт Степанцев in PHP
поскольку приводит вас к идее глобального стейта, неявно (!) влияющего на всё
источник

АС

Альберт Степанцев in PHP
Egor Gruzdev
нет, как то безосновательно, что именно мы этим нарушаем?
здравый смысл
резолвинг если не обязан, то крайне желательно должен быть чистой функцией

максимум, что я могу допустить - это зависимость от контекста вызова
вроде ларовского when
то есть кто запрашивает зависимость

но зависимость от глобального стейта - однозначно фу
источник

АС

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

EG

Egor Gruzdev in PHP
Dmitrij Kravchenko
Именно авторизации в плане политик? Или просто точки входа ?
Дмитрий имелось, ввиду что метод контролера на вход принимает интерфейс, реализация интерфейса зависит от прав пользователя, от наличия самого пользователя или др. авторизаций
так вопрос правильно ли делать так:

$this->app->bind(Interface::class, function ($app) {
           if($app['request']->user()) {
               return new Class1();
           } else {
               return new Class2();
           }
       });
источник

АС

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

DE

Dmitry Eliseev in PHP
Egor Gruzdev
Дмитрий имелось, ввиду что метод контролера на вход принимает интерфейс, реализация интерфейса зависит от прав пользователя, от наличия самого пользователя или др. авторизаций
так вопрос правильно ли делать так:

$this->app->bind(Interface::class, function ($app) {
           if($app['request']->user()) {
               return new Class1();
           } else {
               return new Class2();
           }
       });
Инжектите фабрику или локатор и из неё дёргайте $this->factory->forGuest() и forUser()
источник

EG

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

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

АС

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

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