Где хранить автозагрузку и классы роутера

Где я должен хранить свой класс автозагрузки и класс маршрутизатора?

Как я понимаю, класс маршрутизатора не является частью шаблонов проектирования, поэтому я должен хранить его в папке, скажем facadeтогда где мне его хранить?

Кроме того, как насчет класса автозагрузки, он не является частью каких-либо шаблонов проектирования? где я должен держать это тогда?

где все php-фреймворки хранят эти два класса? Я пытаюсь найти их в Laravel, CakePHP, Zend Framework и т. Д., Чтобы получить некоторые идеи, где они должны храниться, но я не могу найти их в этих рамках. Есть идеи?

класс роутера,

class Router
{
...
}

класс автозагрузки,

class Autoloader
{
...
// spl_autoload_register(array($this, 'load'));
}

1

Решение

Торт Custom Router Class: http://book.cakephp.org/2.0/en/development/routing.html#custom-route-classes

У меня есть автозагрузка в app / Vendor / autoload.php, по сути это ссылка на app / Vendor / Composer / autoload_real.php, созданную Composer. Информация здесь: http://book.cakephp.org/2.0/en/installation/advanced-installation.html#installing-cakephp-with-composer

Если вы пишете полностью настраиваемую автозагрузку, я думаю, что вы также можете разумно создать / app / Autoload / и добавить ее здесь. Я делаю что-то похожее для событий — создание / app / Event / .. — оно следует соглашениям файловой структуры Cake и работает хорошо. Я не знаю ни одного указанного метода в Cake Docs для создания собственного класса автозагрузки.

Больше информации о загрузке классов здесь: http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-classes

1

Другие решения

Хорошо, давайте возьмем современный подход. Ни одна из платформ теперь не хочет автозагрузчик. Просто следуйте стандарту psr-4 (или psr-0, если хотите) для автозагрузки классов php. Всегда используйте composer для автозагрузки ваших файлов и зависимостей.

Скажем, вам нужно автоматически загрузить все ваши классы для пользовательского проекта. Все ваши классы находятся в каталоге приложений. Как ты делаешь это? В вашем файле composer.json

"autoload": {
"psr-4": {
"MyAppName\\" : "App"}
}

Теперь, если вы следуете psr-4 и вам требуется «vendor / autoload.php» в любом файле, и все ваши классы будут автоматически загружаться при необходимости.

Надеюсь, я смогу ответить на ваши вопросы. Вы можете использовать использовать classmap composer, если хотите, но не предлагаете.

1

По вопросам рекламы [email protected]