@laravel_pro

Страница 405 из 2014
F01134H
17.03.2017
09:43:01
я уже разобрался как работает di в ларке, и это по-моему именно то, что нужно)

Alexander
17.03.2017
09:58:05
di в ларе работает по неймспейсам

класс автоматом инжектится

ничего не надо прописывать

Google
Alexander
17.03.2017
09:58:38
просто корректный неймспейс прописываешь и инжектишь куда угодно

если как фасад его хочешь зарегать, то в сервис провайдере описываешь биндинг

аля $this->app->bind('HelpSpot\API', function ($app) { return new HelpSpot\API($app->make('HttpClient')); });

F01134H
17.03.2017
10:13:51
А можно поподробнее?

di в ларе работает по неймспейсам

класс автоматом инжектится

Пример какой-нибудь простой

i
17.03.2017
10:15:38
простой пример это Request в контроллере

Alexander
17.03.2017
10:17:28
например ты создаешь класс в папке App/MyModule/MyClass.php

у него соответственно описываешь неймспейс

namespace App\Mymodule;

и инжектишь его куда угодно

Google
Alexander
17.03.2017
10:19:35
типа public function mymethod(MyClass $myclass) {}

будет создан экземляр твоего класса в переменной $myclass

F01134H
17.03.2017
10:20:21
а для вызова методов мне что делать) Типо сделать

Alexander
17.03.2017
10:20:43
ну у тебя в переменной $myclass будет находиться экземляр твоего класса

т.е. $myclass->method();

F01134H
17.03.2017
10:21:49
т.е. внедрение зависимостей в одну сторону только работает?

блин странно

Alexander
17.03.2017
10:22:22
не совсем понял

что значит в одну сторону

F01134H
17.03.2017
10:22:42
я думал типо создаешь сервис-провайдер, заполняешь его сервис-контейнерами. И при вызове любого сервис-контейнера у тебя в провайдере автоматически конфиги бутстрапятся

Alexander
17.03.2017
10:23:07
Вооооотт...

это простая инициализация класса в ioc

если ты хочешь

предварительно вызвать конструктор например

и загрузить конфиг например

это значит тебе нужны фасады

сейчас попробую объяснить

F01134H
17.03.2017
10:23:58
а фасад зачем? Это ж вроде интерфейс контейнера

по крайней мере в ооп паттернах оно так

Alexander
17.03.2017
10:25:43
для примера

Google
Alexander
17.03.2017
10:26:29
на фасадах в ларавеле реализованы все глобальные модули

типа Request, Cache

итп

через них типа предоставляется статический интерфейс

т.е. если ты хочешь сделать некий модуль со своим конфигом итп

то лучше реализовать его как фасад

я бы так сделал

либо давай прикладно посмотрим, скажи что ты хочешь сделать?

что будет делать класс?

F01134H
17.03.2017
10:28:31
Ну вот смотри

у меня апи будет работать с очередями

я хочу сделать сервис провайдер, который коннектит rabbitmq

F01134H
17.03.2017
10:29:15
что бы мне не делать это в каждом методе каждого контроллера

Мне тут сказали, что так - будет правильно

Alexander
17.03.2017
10:29:35
дык стоп

тебе просто драйвер нужно описать свой

кастомный

для работы с очередями

F01134H
17.03.2017
10:29:57
не не

Alexander
17.03.2017
10:29:58
и по моему laravel уже имеет такой драйвер

Google
F01134H
17.03.2017
10:30:19
мне просто нужно коннектить это дерьмо и все, Александр

не усложняй еще и драйверами :D

Alexander
17.03.2017
10:30:42
ну тогда фасад тебе идеально подойдёт насколько я вижу

F01134H
17.03.2017
10:30:56
просто сделать обертку, которая грузит AMQP и делает коннект, а когда прила отработала делает дисконнект

Alexander
17.03.2017
10:30:58
просто будешь юзать его также как все остальные фасады

понял

тебе нужен фасад

100% инфа

F01134H
17.03.2017
10:31:16
так

Alexander
17.03.2017
10:31:20
я щас опишу примерно даже как это будет выглядеть

Admin
ERROR: S client not available

Alexander
17.03.2017
10:31:27
код накидаю, погожи

погоди

версия ларавеля какая?

F01134H
17.03.2017
10:32:42
5.4

Alexander
17.03.2017
10:33:02
отлично

тогда дай мне 5 минут

F01134H
17.03.2017
10:34:41
Конечно)

Alexander
17.03.2017
10:42:17
Конечно)
http://pastebin.com/jPxdfjRz

если я ничего не забыл

Google
Alexander
17.03.2017
10:42:25
то будет примерно так

потом ты можешь где угодно юзать свой AMQPClient и он уже будет заиничен в приложении как синглтон

через сервис провайдер

F01134H
17.03.2017
10:44:03
а как его заюзать?

Alexander
17.03.2017
10:44:37
как статический фасад

AMQPClient::lisqQueues()

ну для примера конечно же

если реализуешь у него метод listQueues()

F01134H
17.03.2017
10:46:13
Аа

и типо все управление очередями реализуется в этом классе?

Alexander
17.03.2017
10:46:27
да

F01134H
17.03.2017
10:46:37
Понял

Alexander
17.03.2017
10:46:44
а в сервис провайдере просто инитишь его в приложении кк бы

F01134H
17.03.2017
10:46:58
а как мне коннект\дисконнект сделать? в конструкторе и деструкторе?

Alexander
17.03.2017
10:47:15
мм... хороший вопрос

F01134H
17.03.2017
10:47:18
а, я ж статические методы юзаю

ну, мне вызывать каждый раз придется AMQPClient::connect(); что как бы не оч)

Alexander
17.03.2017
10:48:18
не нужно

сек

с конектом всё понятно

он при ините фасада будет происходит

а вот насчет дисконекта в деструкторе не уверен

дай подумать

Страница 405 из 2014