После многочисленных дебатов, авторы выбрали маленькие буквы для пространств. И их нельзя за это осуждать. Ведь все аргументы в пользу одного варианта или другого сводятся к личным предпочтениям.
Схожий случай с нескончаемой войной «пробелы vs. табуляция». Нам просто говорят: «Смиритесь с этим, не парьтесь».
ОК. Стараюсь смирится. Даже первое время получалось, кого интересует что там внутри фреймворка. Но ничего не получается.
namespace app\controllers; use yii\web\Controller; use Zend\Barcode\Barcode; 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 App\Controllers; use Yii\Web\Controller; use Zend\Barcode\Barcode; class SiteController extends Controller { }
P.S. Очень прошу не устраивать в комментариях холивар и не выражать свое негодование к решению разработчиков. Давайте сконцентрируемся на тексте поста, может у вас есть ко мне замечания или идеи как улучшить код. Спасибо.
ссылка на оригинал статьи http://habrahabr.ru/post/205734/
Добавить комментарий