Уровень оптимизации композитора 1


На странице оптимизации автоматической загрузки композитора :

Примечание: Вы не должны включать какую-либо из этих оптимизаций в разработке , поскольку все они вызовут различные проблемы при добавлении/удалении классов. Прирост производительности не стоит проблем в условиях разработки.

Я определенно вижу проблемы с оптимизацией уровня 2 (карта авторитетных классов) в среде разработки, но я не могу определить, что проблемы связаны с оптимизацией уровня 1 (генерация карты классов), если я буду следовать стандарту PSR-4.

  • Если я добавлю класс, который не был сгенерирован на карте классов, он вернется к правилам PSR-4 для поиска класса.
  • Если я рефакторирую (перемещаю) класс в другое пространство имен, он также не найдет его на карте классов и попытается разрешить его с помощью правил PSR-4.

Каковы потенциальные проблемы с сгенерированной картой классов в среде разработки с проект, соответствующий PSR-4?

Author: rink.attendant.6, 2018-04-26

1 answers

Оптимизация уровня 1 может создать проблемы, если вы переместите класс в другой каталог без изменения пространства имен. Поскольку может быть несколько способов разрешения одного пространства имен, такие изменения будут правильно обработаны Composer, но могут завершиться неудачей, если у вас устаревшая карта классов.

Пример:

"autoload": {
    "psr-4": {
        "app\\": "src",
        "app\\db\\": "src/drafts/db"
    }
},

Класс app\db\Entity может быть помещен в src/drafts/db/Entity.php или src/db/Entity.php, и в этом порядке Композитор будет искать файл класса. Обычно, если вы переместите файл из src/drafts/db в src/db, композитор, наконец, найдите этот класс. Но если у вас устаревшая карта классов, Composer слепо включит несуществующий файл, и вы получите фатальную ошибку.

В дополнение к этому apcu-autoloader опция также будет кэшировать промахи. Поэтому, если вы запросите несуществующий класс app/db/NewEntity, а затем добавите этот класс, Composer не обнаружит это изменение, так как он кэшировал информацию о том, что этот класс не существует.

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

 0
Author: rob006, 2018-04-26 14:53:34