Спасибо, за совет.
почитал немного про IoC Container, не могли бы вы пару моментов пояснить:
Возьмем для примера loC в Laravel laravel.com/docs/4.2/ioc
1. в конструктор класса (например того же контроллера) может инжектится несколько объектов, но если контроллер должен работать с Sms, отправкой писем, кучей моделей, все это инжектить в конструктор ? например 5 - 10 сущностей передавать, или это нормально ?
2. Или если взять модель данных, к примеру SocialFeeds,
connect с bd инжектить в конструктор? а дополнительные внешние зависимости с которыми работают методы, аттачить в отдельных методах, как правильней?
Например:
class SocialFeeds extends \Base\Model
{
public $twService;
public $connect;
public $mailService;
public function __construct($connect) {
$this->connect = $connect;
}
public function setTwService($twService) {
$this->twService = $twService;
}
public function setMailService($mailService) {
$this->mailService = $mailService;
}
}
He11ion: Теперь понял, ну идея интересная, кучу перегрузок только конечно придется делать. Еще вопрос, как вы тестируете внешние ресурсы с которыми работает сайт например отправка письма через api или sms, каждый раз тесты достаточно долго проходят пока все соединиться с внешними сайтами, пока попробует отправить уходит много времени на прогон
Немного не понял ваш ответ. Вот смотрите если мы перегружаем родной класс, то методы в нем мы уже не сможем сделать статическим, так как не вызовется через Mock или Stub, а если не статическим то перегрузить не сможем.
olamedia .: Наверное не очень понятно написал попробую более доступно.
Вот пример есть главный шаблон в нем центральная и правая колонка.
- В правой части дергается необходимый метод контроллера, который показывает рейтинг пользователя.
- В центральную часть рендериться весь контент из контроллеров
- Переходим на другую страницу, например профиля пользователя и вместо блока рейтинга в правой колонке нужно загрузить коментарии а на другой старнице еще что то.
Соответственно правой частью мы управлять не можем из view контроллера, так как она находиться в главном шаблоне.
if/else в правом блоке может быть слишком много, придется все время смотреть url страницы
olamedia .: Спасибо, за ответ. Скажите как вы в (HMVC) решаете проблему рода, когда нужно во фронтовой вьюхе, на одной странице показывать один блок, а на другой в этом самом месте рендерить другой, какой то стек есть ? где в методе контроллера указываются какие блоки в данный момент нужно рендерить или как то гибче обходите?
Ну если так то можно, единственно получается какой то сферический виджет который умеет читать базу, насколько мне помниться та же концепция виждетов в Yii этого не подразумевает.
Да часть проблем он решит , но в виджет придется передавать массив, данных выбранных из БД, и для него придется делать одинаковые запросы в методах и передавать их во view. А если их 5 -10 на странице используется. В каждом методе придется писать одни и те де выборки.
Дмитрий Миронов: Спасибо, Получаеться модель наследует шлюз, все обращения к клюзу через модель ?. Методы шлюза у вас возращают готовый SQL, а параметры передаваються как аргументы или массив.
Идея нравиться, подскажите как лучше оргнизовать классы шлюзов ?
Положить в отдельную дирекрию от моделей ?
И я так понимаю шлюз это абстрактынй класс ?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.