Yii2: PSR-4
12 января 2014
Yii2 перешёл с PSR-0 на недавно принятый PSR-4, благодаря чему из загрузчика классов удалось выкинуть кучу кода, теоретически сделав его быстрее (не замеряли). Также немного уменьшилась вложенность директорий официальных пакетов, что, хоть и не имеет большого значения, делает структуру чуть более простой.
Если вы уже использовали Yii2 через Composer:
- Выполнить
composer self-update
. - Правим пути в
index.php
,index-test.php
иyii
. Там нужно убрать один уровень/../
. - Удаляем всё кроме
.gitignore
изvendor
иcomposer.lock
, делаем зановоcomposer install --prefer-dist
.
Ещё одна приятная штука, расширения теперь можно делать по-человечески, складывая классы прямо в корневую директорию репозитория.
Комментарии RSS по email OK
Саш, добавь еще в пост про self-update композера, у меня без этого install не проходил.
Алексей, готово.
Тут можно подробнее? В этом примере -github.com/samdark/yii2-iconized-menu-widget виджет просто оформлен по psr - vendor/package-name. А как это будет работать внутри yii? надо будет писать \yii\samdard\yii2-iconized-menu-widget или просто \samdard\yii2-iconized-menu-widget?
Виктор, никакой магии. Просто
samdark\iconizedMenu
.А как же старые расширения? bootstrap и прочие? к ним namespace остается старый - "/yii/bootstrap/..."?
Виктор, да.
Sam, подскажи куда правильно складывать код своих классов? в какую папку?
Например, я расширил класс ArrayHelper. Куда правильно положить файл?
Куда удобно, туда и правильно.
Добрый день! Подскажите как добавлять расширения не использую composer?
Максим, лучше его использовать. Какие с ним проблемы?
А так... копируем в
vendor
в соответствии сcomposer.json
, вvendor/yiisoft/extensions.php
прописываем алиас для расширения. Примерно так:У меня мало опыта работы с composer. Например если расширение/модуль пишется под конкретный проект
Максим, разобраться с Composer легче, чем научиться делать всё это руками.
Спасибо!
Добрый день.
Проинсталировал yii2-iconized-menu-widget в Yii2 basic app. Написал как в примере:
Ругается что "Class 'Menu' not found"
Что не так?
Еще меня интересует как организовывать классы приложения и расширять классы Yii и других компонентов, а именно как работать с подгрузчиком в таких случаях? Что нужно прописывать или запускать? Надо ли с добавлением класс-файла делать "перезагрузку" или всё работает динамически (в рамках namespace или глобально)?
Dmitri, был неправильный composer.json в моём репозитории. Поправил. Через несколько часов должно ставиться и работать.
Никаких проблем с подгрузчиком в случае классов приложения быть не должно. Прописывать и запускать ничего не нужно.
Ссылка на PSR-4 не работает. Можно на сайте, например, посмотреть: www.php-fig.org/psr/psr-4/
Поправил.