Синглтон, антипаттерн и все-все-все

Да тебе говорят, что ты инжектишь какую-то херню, это в аргументы обычного метода тебе нужно передавать. В конструктор инжектят то, что есть на этапе конфигурации, либо через фабрику. Здесь мне трудно посоветовать что-то конкретное, потому что пример какой-то говёный: какому-то платёжному сервису нужен IRequest (щито?!), какому — какой-то говёный IModel (щито?!).

И что такое вообще «модель»? Модель чайника? Мобильника? «Модель» — это совокупность (или какой-то вполне конкретный класс — User, Book, etc.) сущностей, value object'ов и каких-то бизнес-сервисов, которые моделируют предметную область. Просто интерфейс IModel — это какое-то говно. Какие же там методы могут находится?

AmdY тоже какую-то херню несёт, в сущность User сервисы пихает, либо не умеет правильно именовать классы.

Херню пишешь ты уважаемый. Не можешь оперировать абстракциями, не пиши свою пургу не отвлекай людей. Или мне тебе какой то реальный пример из жизни вспоминать и разжевывать, что это за класс и, что он делает - какая разница?? модель ботинка или модель вурдалака. Неужели так тяжело вникнуть в суть вопроса?
А насчет использования интерфейсов в подсказках типа, думаю даже самому тупому будет ясно для, чего это делается, а не выставляется конкретная реализация некого объекта...
http://phpclub.ru/talk/members/amdy.4850/
AmdY все верно написал суть уловил, что я спрашивал, опять же вопрос к нему, вы когда-нибудь пробовали тестить такую конструкцию с внедренным контейнером?
Тяжело, невозможно, что то другое?
 
Варианты:
1. Передать туда SL - и пусть объект вытягивает сам, что ему нужно.
2. Сделать фабрику которая на основе Switch case смотрела что за класс требуется и инжектила туда необходимое ().
3. В фабрике юзать Di фреймворок который сам определит что нужно вашему классу и сам заинжектит туда все, что нужно.
1. Увеличивается связанность. Плохо.
2. Еще хуже.
3. Да.
 
ребята, кто-нибудь из вас реально инжектит модель в контроллер?
я говорю, не про поделки на досуге или десктоп приложения.
 
сервисы да, а модель?
ну там Book, Author.
неужто модель как сервис регаешь?

это академически правильно, но жесть же =)

ЗЫ.
Я поясню к чему клоню.
Есть хорошие практики, но переусердствовать с ООП головного мозга тоже не надо =)
 
неужто модель как сервис регаешь?
...
это академически правильно, но жесть ж
Кто сказал, что это академически правильно? Модель ты получаешь из репозитория, mapper'а, etc. Инжектить их как сервис — это какая-то херня.
 
сервисы да, а модель?
ну там Book, Author.
неужто модель как сервис регаешь?
А что модели делать в контроллере при наличии уровня сервиса? o_O
И нахрена их использовать в роле серсисов, если они сервисами не являются? Это же обычные DTO.

Мой работодатель готов идти на то, что моя производительность будет ниже с использованием всего этого. Чтобы через несколько лет проект был так же не перегружен деталями, как и сейчас.
Проект - тот самый кровавый энтерпрайз. Вне этого поля деятельности я бы так делать никогда не стал.
 
ваще не понял тебя =)
покажи экшен в котором создаешь книгу... псевдокодом
 
переусердствовать с ООП головного мозга
ООП головного мозга - это когда используешь якобы "хорошие" практики, начитавшись книжек, но не понимая, что в каком контексте имеет смысл, а в каком являет собой полный бред. Ну вот типа как модели в контроллер инжектить.
 
ну дак я об этом же... хотя может за IModel скрывается что-то иное...
UPD.
А блин, там не контроллер ... но в сервисе модели тоже нечего делать
UPD...
блин туплю - лучше жевать =)
 
PHP:
public function action(){
  return(
    'books' => $this->booksService->find($this->request('query')); // сервис поставляет модель 
  );
}
 
Redjik, ну вот на примере доктрины, в контроллере юзается манагер моделей, который можно инжектить как сервис. А что-как с моделями, уже манагер и решает.
esase, подозреваю, что ты задал свой вопрос не в том топике. Посмотри, к примеру, это. При помощи одной лишь зависимости можешь создать неограниченные возможности для класса (хотя тоже способ спорный=) Мне не нравится магия.
 
Redjik, Absinthe, вы одно и то же под моделью имеете ввиду?) у доктрины модель - это инстанс репозитория, а у AR - статические методы модели.
 
AmdY все верно написал суть уловил, что я спрашивал, опять же вопрос к нему, вы когда-нибудь пробовали тестить такую конструкцию с внедренным контейнером?
Тяжело, невозможно, что то другое?
Получается грязноватый юнит тест, так как нужно готовить контейнер, но большой проблемы в этом нет.
PHP:
$ioc = new IoC();
$ioc['mailer'] = Mockery::mock('Foo\Mailer')->shouldReceive('send');
$userRepository = Mockery::mock('UserRepository')->shouldReceive('create');
$controller = new Acme\Controller\User($ioc, $userRepository);
$result = $controller->registration();
 
Redjik, Absinthe, вы одно и то же под моделью имеете ввиду?) у доктрины модель - это инстанс репозитория, а у AR - статические методы модели.
Модель — это сущность из предметной области приложения, а не инстанс репозитория или набор методов.
 
Сверху