
Evgeniy
18.02.2017
14:49:30
IoC реализует ContainerInterface
в начале его спрашивают ты можешь загрузить EntityManager::class
он говорит да или нет, если говорит да, то ему говорят грузи хули и что он вернет передадут пользователю
который запросил в locator нужный ему entityManager

Google

Evgeniy
18.02.2017
14:51:48
если он говорит я не могу (нету файла конфига по сути) locator идет по другим объектам реализующим ContainerInterface и спрашивает у них можешь загрузить ...
и так пока объекты с ContainerInterface не кончатся которые были переданы ему в constructor если он прошел их все и не смог загрузить вылетаем с NotFoundException
примерно такая логика

Sergey
18.02.2017
14:52:46
мне не интересна его биография, мне интересно узнать его зону ответственности. Что он делает? Одним предложением

Aleh
18.02.2017
14:53:08
инклудит файлы по имени класса)

Sergey
18.02.2017
14:53:19
ну вот что-то типа такого я хотел услышать)

Evgeniy
18.02.2017
14:53:32
https://github.com/container-interop/fig-standards/blob/master/proposed/container.md

Aleh
18.02.2017
14:53:47
посмотри как там твоя проблема решена

Sergey
18.02.2017
14:54:21

Aleh
18.02.2017
14:54:35
ты пытаешься сделать какой-то модульный подход, как в пайтоне или ноде в пхп
но тут не так

Evgeniy
18.02.2017
14:54:48
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container-meta.md вот и https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md

Google

Evgeniy
18.02.2017
14:55:09
это accepted стандарты и вот тот самый костыль на случай если пользователь либы не знает что то из psr
доказывает его необходимость

Aleh
18.02.2017
14:55:25
эм
чет я вообще не уловил логику

Evgeniy
18.02.2017
14:56:10
потому что вы код начали смотреть через одно место не с той стороны

Aleh
18.02.2017
14:56:13
вижу два psr, причем к ним пользователи, которые не знают про psr

Evgeniy
18.02.2017
14:56:20
привязавшись к include и к ob_start

Aleh
18.02.2017
14:56:33
но ты так и не объяснил зачем оно
мы все пытаемся выбить из тебя
но ты сопротивляешься(
партизан

Sergey
18.02.2017
14:56:46

Evgeniy
18.02.2017
14:56:51

Sergey
18.02.2017
14:57:05

Aleh
18.02.2017
14:57:12
да, что вот)

Sergey
18.02.2017
14:57:19
"ой все"

Evgeniy
18.02.2017
14:57:39
опиши мне зону ответственности этого класса
IoC реализует ContainerInterface
мне не интересна его биография, мне интересно узнать его зону ответственности. Что он делает? Одним предложением
там были дополнительные детали, чтобы было понятней но мой ответ что ответсвенность IoC состоит в том чтобы соответствовать ContainerInterface

Google

Evgeniy
18.02.2017
14:58:44
это было достаточная информация

Aleh
18.02.2017
14:59:08
где-то в ContainerInterface есть требование юзать include и ob_start?

Evgeniy
18.02.2017
14:59:25
причем тут это ?
там нет требования юзать Reflection но ее юзают

Aleh
18.02.2017
14:59:39
мы тут хотим узнать зачем ты их юзаешь

Evgeniy
18.02.2017
14:59:47
и она еще медленее чем include php файла

Aleh
18.02.2017
14:59:51
зачем использовать Reflection легко описать

Evgeniy
18.02.2017
15:00:03
чтобы вынести определения создания объекта в отдельный фаил
в тех случаях когда информации в рефлектион не достаточно например

Aleh
18.02.2017
15:00:24
не вопрос, зачем его импортить?

Evgeniy
18.02.2017
15:00:34
а какой другой вариант?

Sergey
18.02.2017
15:00:55

Sergey
18.02.2017
15:01:01
а еще парсинг
и выполненение

Evgeniy
18.02.2017
15:01:12
reflection точно также читает

Aleh
18.02.2017
15:01:16
psr-4?)

Evgeniy
18.02.2017
15:01:27
в случае кэша в обоих случаях он будет
psr-4 вообщем не об этом

Aleh
18.02.2017
15:01:50
в смысле не об этом?))

Google

Aleh
18.02.2017
15:01:55
конечно же об этом

Evgeniy
18.02.2017
15:02:20
к сожалению нет давай я договорю с Сергеем потом покажу тебя что там psr-4 не при делах ?)
чтобы не вести 2 дискуссии паралельно

Aleh
18.02.2017
15:02:36
при делах
смотри

Evgeniy
18.02.2017
15:03:40
сейчас будем мерить бенчмарком подключение файла и рефлестион потом вспоминать про кэши в виде apc и тд
а еще парсинг
и выполненение

Aleh
18.02.2017
15:03:42
ты предлагаешь контейнеру бегать по фс и по имени класса лоадить файлы, все файлы должны лоадится через psr-4, а фабрики в контейнер надо, тадададада, передать!

Sergey
18.02.2017
15:03:49

Admin
ERROR: S client not available

Aleh
18.02.2017
15:03:52
надо сравнивать бегание по фс
и не бегание по фс
кто же победит
хм

Evgeniy
18.02.2017
15:04:09
хорошо давай о psr-4
вот твоя ситуация у тебя есть такой код
http://pastebin.com/ZzyBAycz
он впринципе не противоречит psr

Google

Evgeniy
18.02.2017
15:06:25
но адский говно код в конструкторе

Aleh
18.02.2017
15:07:47
new Container([
Test::class => factory(function(Container $c) {
return new Test($c->get(Logger::class);
})
]);

Evgeniy
18.02.2017
15:08:10
ок верно
но ты понимаешь что количество объектов в твоем коде овер много

Aleh
18.02.2017
15:08:39
какая разница сколько их?

Evgeniy
18.02.2017
15:08:44
и писать такие определения в самом начале это инициализировать дофига всего

Aleh
18.02.2017
15:08:53
ничего не инициализируется

Evgeniy
18.02.2017
15:08:59
да не все такие кривые и легаси

Aleh
18.02.2017
15:09:02
оно инициализируется по запросу

Evgeniy
18.02.2017
15:09:23
код функции выполняется да
а массив keyValue
у тебя таких классов как Test может быть много

Aleh
18.02.2017
15:10:07
даже если их около 10000, то это всего лишь 320 килобайт вроде
и нет никаких пробежек по фс

Evgeniy
18.02.2017
15:11:13
так работа фс кэшируется и php код тоже кэшируется
opcache

Aleh
18.02.2017
15:11:51
опкеш не кеширует фс О.о

Evgeniy
18.02.2017
15:12:10
он байт код кэширует
по твоему как кэшируется загрузка классов ?)
если не фс ?))
которая осуществляется через упомнятой тобой psr4 или deprecated psr0
получается инклуд будет закэширован скорей всего

Aleh
18.02.2017
15:13:44
что?