Не так давно вышла первая альфа Yii 2, уже можно знакомится подробнее с ним.
После многочисленных дебатов, авторы выбрали маленькие буквы для пространств. И их нельзя за это осуждать. Ведь все аргументы в пользу одного варианта или другого сводятся к личным предпочтениям.
Схожий случай с нескончаемой войной «пробелы vs. табуляция». Нам просто говорят: «Смиритесь с этим, не парьтесь».
ОК. Стараюсь смирится. Даже первое время получалось, кого интересует что там внутри фреймворка. Но ничего не получается.
namespace appcontrollers;
use yiiwebController;
use ZendBarcodeBarcode;
class SiteController extends Controller
{
}
Мне не комфортно когда в приложении вот такой вот бардак.
Пробелы и табуляцию можно взаимо заменить. Git hooks или IDE сделает это очень быстро. С пространствами сложнее, но нас же это не остановит :)
Помним что в PHP классы не чувствительны к регистру, остается лишь импортировать нужный файл.
Для этого добавим нужный автозагрузчик классов, сделать это надо после регистрации загрузчика Yii.
spl_autoload_register(function ($class) {
if (0 === strpos($class, 'Yii\')) {
$pos = strrpos($class, '\');
$parts = explode('\', substr($class, 0, $pos));
array_walk(
$parts,
function (&$item) {
$item = lcfirst($item);
}
);
spl_autoload_call(
implode('\', $parts) . '\' . substr($class, $pos + 1)
);
return true;
}
return false;
});
Код лежит в репозитории, если вы используете Composer, можете добавить следующую зависимость
"repositories": [
{
"type": "package",
"package": {
"name": "slavcodev/ucfirst-namespace",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/slavcodev/yii2-ucfirst-namespace.git",
"reference": "master"
},
"autoload": {
"files": ["autoload.php"]
}
}
}
],
"require": {
"php": ">=5.4.0",
"ext-intl": "*",
"yiisoft/yii2": "*",
"slavcodev/ucfirst-namespace": "*"
}
Все теперь у нас порядок.
namespace AppControllers;
use YiiWebController;
use ZendBarcodeBarcode;
class SiteController extends Controller
{
}
P.S. Очень прошу не устраивать в комментариях холивар и не выражать свое негодование к решению разработчиков. Давайте сконцентрируемся на тексте поста, может у вас есть ко мне замечания или идеи как улучшить код. Спасибо.
Автор: slavcopost