<rmcreative>

RSS

Yii2: PSR-4

12 января 2014

Yii2 перешёл с PSR-0 на недавно принятый PSR-4, благодаря чему из загрузчика классов удалось выкинуть кучу кода, теоретически сделав его быстрее (не замеряли). Также немного уменьшилась вложенность директорий официальных пакетов, что, хоть и не имеет большого значения, делает структуру чуть более простой.

Если вы уже использовали Yii2 через Composer:

  1. Выполнить composer self-update.
  2. Правим пути в index.php, index-test.php и yii. Там нужно убрать один уровень /../.
  3. Удаляем всё кроме .gitignore из vendor и composer.lock, делаем заново composer install --prefer-dist.

Ещё одна приятная штука, расширения теперь можно делать по-человечески, складывая классы прямо в корневую директорию репозитория.

Комментарии RSS

  1. №8752
    Алексей
    Алексей 13.01.2014, 8:31:13

    Саш, добавь еще в пост про self-update композера, у меня без этого install не проходил.

  2. №8753
    Sam
    Sam 13.01.2014, 12:29:38

    Алексей, готово.

  3. №8756
    Виктор
    Виктор 14.01.2014, 13:52:00

    Ещё одна приятная штука, расширения теперь можно делать по-человечески, складывая классы прямо в корневую директорию репозитория.

    Тут можно подробнее? В этом примере -github.com/samdark/yii2-iconized-menu-widget виджет просто оформлен по psr - vendor/package-name. А как это будет работать внутри yii? надо будет писать \yii\samdard\yii2-iconized-menu-widget или просто \samdard\yii2-iconized-menu-widget?

  4. №8757
    Sam
    Sam 14.01.2014, 15:31:34

    Виктор, никакой магии. Просто samdark\iconizedMenu.

  5. №8758
    Виктор
    Виктор 14.01.2014, 17:48:59

    А как же старые расширения? bootstrap и прочие? к ним namespace остается старый - "/yii/bootstrap/..."?

  6. №8759
    Sam
    Sam 14.01.2014, 18:07:36

    Виктор, да.

  7. №8798
    alex
    alex 05.02.2014, 14:16:05

    Sam, подскажи куда правильно складывать код своих классов? в какую папку?

    Например, я расширил класс ArrayHelper. Куда правильно положить файл?

  8. №8802
    Sam
    Sam 07.02.2014, 0:47:22

    Куда удобно, туда и правильно.

  9. №8898
    Максим
    Максим 24.03.2014, 11:12:19

    Добрый день! Подскажите как добавлять расширения не использую composer?

  10. №8899
    Sam
    Sam 24.03.2014, 14:46:17

    Максим, лучше его использовать. Какие с ним проблемы?

    А так... копируем в vendor в соответствии с composer.json, в vendor/yiisoft/extensions.php прописываем алиас для расширения. Примерно так:

    '@yii/debug' => $vendorDir . '/yiisoft/yii2-dev/extensions/debug',
  11. №8901
    Максим
    Максим 24.03.2014, 14:51:40

    У меня мало опыта работы с composer. Например если расширение/модуль пишется под конкретный проект

  12. №8902
    Sam
    Sam 24.03.2014, 17:51:26

    Максим, разобраться с Composer легче, чем научиться делать всё это руками.

  13. №8903
    Максим
    Максим 24.03.2014, 17:52:05

    Спасибо!

  14. №8930
    Dmitri
    Dmitri 06.04.2014, 13:02:12

    Добрый день.

    Проинсталировал yii2-iconized-menu-widget в Yii2 basic app. Написал как в примере:

    use samdark\iconizedMenu;
    echo Menu::widget([
       ...

    Ругается что "Class 'Menu' not found"

    Что не так?

    Еще меня интересует как организовывать классы приложения и расширять классы Yii и других компонентов, а именно как работать с подгрузчиком в таких случаях? Что нужно прописывать или запускать? Надо ли с добавлением класс-файла делать "перезагрузку" или всё работает динамически (в рамках namespace или глобально)?

  15. №8931
    Sam
    Sam 06.04.2014, 14:37:24

    Dmitri, был неправильный composer.json в моём репозитории. Поправил. Через несколько часов должно ставиться и работать.

    Никаких проблем с подгрузчиком в случае классов приложения быть не должно. Прописывать и запускать ничего не нужно.

  16. №9166
    lkg0dzre
    lkg0dzre 06.09.2014, 21:40:42

    Ссылка на PSR-4 не работает. Можно на сайте, например, посмотреть: www.php-fig.org/psr/psr-4/

  17. №9167
    Sam
    Sam 07.09.2014, 2:02:21

    Поправил.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.