@oop_ru

Страница 111 из 785
Sergey
18.02.2017
14:30:07
дай возможность запихнуть фабрику

которая сама заинклудит файл и все сделает

Evgeniy
18.02.2017
14:30:28
задача этой штуки

Sergey
18.02.2017
14:30:28
инклудам не место в классах с названием IoC

Google
Evgeniy
18.02.2017
14:30:52
работать примерно так $logger = $locator->get(LoggerInterface::class);

Sergey
18.02.2017
14:31:06
ну, твой контейнер разберется что "это надо фабрику дернуть"

а фабрика уже сделает инклуд

если ей надо

Evgeniy
18.02.2017
14:31:19
или так class Some { pub func __construct (LoggerInterface $logger) {} };

Sergey
18.02.2017
14:31:31
ну то есть инклуды - задача фабричных методов/функций

Evgeniy
18.02.2017
14:31:39
еще раз

Sergey
18.02.2017
14:31:44
а ты это в IoC запихнул

Evgeniy
18.02.2017
14:31:51
ты спрашиваешь у locator что тебе надо

варианты реализации бывают различные, часть можно через reflection прочитать

Sergey
18.02.2017
14:32:22
ты спрашиваешь у locator что тебе надо
еще раз. Ты смешиваешь "автозагрузку" и "подстановку зависимостей"

Evgeniy
18.02.2017
14:32:25
и понасоздавать объектов, часть нельзя

Sergey
18.02.2017
14:32:39
либо я так и не понял "зачем там инклуд"

Google
Evgeniy
18.02.2017
14:32:45
автозагрузка в composer или любом другом загрузчике

Sergey
18.02.2017
14:32:55
значит в твоей штуке не должно быть инклудов

от слова совсем

может быть отдельный загрузчик кэша

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

твоей либке зачем инклуды то? Я все еще этого не понимаю

и вижу море проблем

Evgeniy
18.02.2017
14:33:34
просто ты не даешь написать и переключаешь темы

я понимаю что тебе непонятно и хочу объяснить

Sergey
18.02.2017
14:34:05
ну так я ж тебя не перебиваю) ты можешь продолжать печатать сообщеньку)

Evgeniy
18.02.2017
14:34:25
иногда в проекте может быть код в виде зависимости, который говно код, но пока проект не отрефакторили от него не отказатся

Sergey
18.02.2017
14:34:45
иногда в проекте может быть код в виде зависимости, который говно код, но пока проект не отрефакторили от него не отказатся
да, и это задача пользователя твоей библиотеки написать фабрику которая это захэндлит. Не твоей либки

Evgeniy
18.02.2017
14:35:10
так вот здесь ты по сути в файле и пишешь фабрику

в этом файле

Sergey
18.02.2017
14:35:37
так вот здесь ты по сути в файле и пишешь фабрику
повторяю еще раз мысль. Ты не должен добавлять подобные фичи в библиотеку

Evgeniy
18.02.2017
14:35:41
сразу без лишней обертки в виде объекта

Sergey
18.02.2017
14:35:48
тем самым она начинает пухнуть от фич которые нужны 1% пользователей

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

Evgeniy
18.02.2017
14:36:02
просто фаил типо <?php return EntityManager::factory(...);

Sergey
18.02.2017
14:36:06
и по хорошему эту обертку нУЖНО сделать

Google
Evgeniy
18.02.2017
14:36:41
хорошо посмотри EntityManager в doctrinе попробуй его через конктруторы создать

там после создания объекта надо вызывать метод который инициализирует подключение

причем doctrine очень популярная либа и сказать типо если юзаете либу не юзайте доктрину я не могу

Sergey
18.02.2017
14:37:39
хорошо посмотри EntityManager в doctrinе попробуй его через конктруторы создать
EntityManagerInterface => factory(function () { return EntityManager::factory(); //... })

все еще не понимаю зачем нужны инклуды

создать файл для фабрики тип чуть проще чем создать.... файл для класса-фабрики?

имхо из-за такой фигни маленьких толковых либок мало

все раздувается бесполезным и ненужным функционалом

это же относится к проектам/продуктам

причем ладно бы только это, тебе потом это суппортить

сам себе проблемы на ровном месте создаешь...

чем меньше умеет либка - тем проще с ней жить и пользователю и мэйнтейнерам

Sergey
18.02.2017
14:39:42
у той же доктрины сейчас та же проблема

и они в 3-ей просто жестко выпиливают весь ненужный функционал

потому что мэйтнейнить этого монстра становится уже весьма и весьма нетривиальной задачей а ценность половины фич весьма и весьма сомнительна

как пример выпиленной фичи - flush($entity) больше нельзя делать, ровно как нельзя делать detach и merge

а ведь это "весьма популярные и часто используемые фичи"

Evgeniy
18.02.2017
14:41:29
это гемор той либы

есть еще всякие phpexcel

Sergey
18.02.2017
14:41:43
но только вот делали их с такими же благими намериньями как и ты, но никто не подумал как пользователи эту фичу будут использовать

Google
Evgeniy
18.02.2017
14:41:48
которые тоже адово собираются и настрайваются

Sergey
18.02.2017
14:41:54
по сути эта фича позволяла разработчикам писать шлак

Evgeniy
18.02.2017
14:42:01
я лишь оставляю возможность запихнуть это все под одну гребенку

Sergey
18.02.2017
14:42:14
которые тоже адово собираются и настрайваются
запилил файбрику и не страдаешь ерундой и не нужны никакие инклуды

Evgeniy
18.02.2017
14:42:24
хорошо запилил фабрику

Sergey
18.02.2017
14:42:26
количество кода - не намного больше чем в твоем случае

Evgeniy
18.02.2017
14:42:29
вот у тебя код доктрины

Sergey
18.02.2017
14:42:32
ну

Evgeniy
18.02.2017
14:42:35
тебе надо entityManager

как его создать ?)

Admin
ERROR: S client not available

Sergey
18.02.2017
14:42:50
$container->get(EntityManagerInterface);

))

а внутри лежит фабрика

Evgeniy
18.02.2017
14:43:00
человек пишет дай мне \doctrine\orm\entityManager

получается до использования надо инициализировать container

цепочкой классов

и указать где лежит фабрика

Sergey
18.02.2017
14:44:00
эм... зачем инициализировать до?

ну то есть

Google
Sergey
18.02.2017
14:44:10
я немного не понял, у тебя есть конфиги, где указаны биндинги

и они загружаются ДО контейнера, и прокидываются внутрь во время его инициализации

а уже после мы просим "а сделай мне энтити менеджер"

и фабрики сделают дела

Evgeniy
18.02.2017
14:44:47
так у меня именно что

Sergey
18.02.2017
14:44:54
если что - так работают вообще все контейнеры

Evgeniy
18.02.2017
14:45:02
загрузка конфигов осуществляется в момент вызова объекта

Sergey
18.02.2017
14:45:03
так у меня именно что
у тебя инклуды

загрузка конфигов осуществляется в момент вызова объекта
то есть ты сделал реализацию IoC которая... не использует IoC?)

Evgeniy
18.02.2017
14:45:27
нет никаких конфигов (ну кроме разве подключения разный объекто ContainerInterface)

я сделал то что можно конфигурацией определить использовать ли функционал

или нет

Sergey
18.02.2017
14:45:48
короч не, спасибо, ты мне эту либку не продал

Evgeniy
18.02.2017
14:45:59
если тебе не надо не создаешь экземпляр

я ее и не продавал

короч не, спасибо, ты мне эту либку не продал
основной класс это Locator и LocatorInterface в частности

а то что мы обсуждали маленькая часть

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

Sergey
18.02.2017
14:47:18
"муди"

ну тогда не понятно почему класс называется IoC

Evgeniy
18.02.2017
14:48:17
просто ты в данный момент смотришь на IoC и думаешь что это вся библиотека

и это надо использовать обязательно

но я такова не говорил

Страница 111 из 785