Pull to refresh
393
0
Александр Макаров @SamDark

PHP, Yii

Send message
Ну и всякое по мелочи: хардкод SET NAMES utf8 и отсутствие экранирования таблиц.
Интересный подход к синтаксису. Жаль or и and без подчёркивания использовать не получится. Путаница неизбежна. Даже в примерах автор путается и пишет без подчёркивания.
PSR-4, как по мне, менее строгий, чем PSR-0, а не более.
В конфиге так и так делать find :) К тому же, не всегда контейнер описывается в одном конфиге. Могут быть аннотации и куча конфигов.

CodeCeption в 1.1 официально не поддерживается. В 2.0 точно работать будет.
Неплохо. Возможно так и сделаем…
Что значит не завели функциональные тесты? Отлично работают.

По поводу брейкпоинтов, да, остановится на нём так и так. Вот только найти куда его поставить становится довольно сложно и проследить, куда далее пойдёт по коду в случае сильного использования DI-контейнера тоже непросто, даже в типизированных языках вроде Java.

Где используется отлично видно, если сделать Find Usages в том же PhpStorm.
За тем же, зачем и для остальных: для возможности перекрыть.
1) Низкая связанность хоть и хорошая штука в общем, но сильно портит API во многих случаях. В Yii она просто не нужна. Оттестировать мы можем любой код.
2) При использовании DI и контейнера в особенности возникают как минимум вот эти побочки:

— Сильно повышается порог вхождения, хоть принцип сам по себе и простой.
— Сложнее отлаживать. Код размазывается по конфигам, куче компонент, вырастает количество слоёв вертикально.

Ну и получаем мы с этого не так много: тестировать слабо связанный код немного проще, но не так чтобы уж слишком. Ну и если программист захочет использовать объект, он его либо вытащит из репозитория, либо инъектнет, либо протащит через конфиг контейнера. Кроме самодисциплины и ревью тут ничем не помочь.

Поэтому мы пользуемся DI умеренно и чаще без контейнера.

Что касается стандартных компонентов, особых проблем с их перекрытием быть не должно. Использовать что-то совсем иное немного проблемно, да. Но на это есть причина. Внешние пакеты. Мы стараемся избежать ситуации, когда пакет блог может использовать swift mailer, пакет feedback, zend mailer, какой-то ещё пакет, какой-то ещё мейлер. В проект вытянется очень много разных мейлеров и все их придётся поддерживать, слать в них одни и те же баги и т.д.

Про отслеживание где и что используется как-то у вас странно. Поставьте нормальную IDE. Про поддержку не согласен. Зависит больше от кода проекта, чем от фреймворка.
Чуть дополню:

1. Хелперы не наследуются от Object. В массиве свойства объектов по умолчанию.
Пустой класс нужен для возможности статического «наследования» через LSB путём подмены пустого через classmap.
А из корня-то зачем импортировать?
1. AR и не предназначен для использования отдельно. Ни один компонент Yii не затачивается под это.
2. По мне так многоуровневая инъекция превращает код в нечитаемый и трудноотлаживаемый слоёный пирог.
3. Они уже почти полностью покрыты тестами.
4. На вкус и цвет. У меня привычка с Java, там они все в нижнем регистре и всё нормально.
Ну, тогда мб стоит переделать чутка. Я особой разницы не вижу, но если режет глаз, почему нет? В github если закинуть, наверняка поправим.
Ну, мы его и продумывали не быстро. Просто показывать было одно время нечего…
Тут у нас получается два одноимённых класса. PHP не позволяет использовать их без задания алиаса аля use \yii\base\Controller as BaseController;.  Чтобы народ не путать названием  BaseController, сделано без алиаса.
Поэтому и появился 2.0.
У Yii практически нет пакетов на packagist потому как Composer поддерживается со второй версии, которой до релиза далеко.
Алиас не хотелось задавать.
По-моему, выбор — это замечательно.

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Works in
Date of birth
Registered
Activity