# L!MP (17.11.2016 / 14:54)Можно назвать и так.
А, ну так фабрика это получается сервис провайдер.
За исключением, что ВСЕ зависимости она (фабрика) должна требовать из контейнера.
# L!MP (17.11.2016 / 14:54)Можно назвать и так.
А, ну так фабрика это получается сервис провайдер.
AlkatraZ, я там начудил с велосипедным ActiveRecord, вместо использования кошерного Doctrine, потому пришлось говнокодить
L!MP, в юнит-тестах нельзя ничего компилировать, ибо "паттерны xUnit". Короче сложно это все )
и для чего это все нужно? чтоб руками не писать вызовы нужного для работы чего то другого? то есть db зависит от config , а
user зависит от db
# Delphinum (17.11.2016 / 14:59)Ну можно это делать заранее, гг.
L!MP, в юнит-тестах нельзя ничего компилировать, ибо "паттерны xUnit". Короче сложно это все )
# Delphinum (17.11.2016 / 14:57)Я хоть и написал для Моби гейт Доктрины, но пока еще до сих пор сомневаюсь в целесообразности ее использования.
AlkatraZ, я там начудил с велосипедным ActiveRecord, вместо использования кошерного Doctrine, потому пришлось говнокодить
Koenig, SL решает две задачи:
1. Логика создания сервиса, будь то конфиги приложения или коннект к БД, аккумулируются в одном месте (в локаторе), а не размазываются по всему приложению, от чего с ними становится проще работать
2. Появляется возможность замени одного сервиса на другой без необходимости что то менять в исходниках
# Koenig (17.11.2016 / 15:01)На примере нового Джона:
и для чего это все нужно? чтоб руками не писать вызовы нужного для работы чего то другого? то есть db зависит от config , а
user зависит от db
/** @var Johncms\User $systemUser */
$systemUser = $container->get(Johncms\User::class);не задумываясь откуда и как это берется. У тебя есть полноценный внутренний API, им (как разработчик модуля0 и пользуешься.AlkatraZ, товарищ Эрик Эванс в своей книге "Проблемно-ориентированное проектирование" привел несколько задач, которые должны решаться на уровне приложения для записи и чтения из базы сущностей. Задачи довольно сложные в реализации, но очень важные. Кроме как Doctrine я не знаю инструментов в PHP, которые их бы решали.
Иными словами: ты знаешь, что у тебя есть контейнер. от которого ты можешь затребовать нужные данные, к примеру объект PDO::class
При чем, на самом деле тебе может отдаваться совсем другое, к примеру Доктрина, или что-то еще...
Но оно будет совместимо с PDO и должным образом проинициализировано.
Зачем ТЕБЕ беспокоиться о том, как в ядре реализована инициализация PDO?
Тебе важно знать, что это ЕСТЬ и ты это можешь получить от контейнера по запросу.