2016-09-16 8 views
1

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

Я заметил, что среди них были абстрактные классы. Другими были те классы с составными именами, как ClassName, как против Name. Однако меня смущает то, что в некоторых случаях все работало, ничего не меняя, а в других композитор заставлял меня менять имена файлов.

Чтобы быть конкретным, я использую свой собственный MVC, и контроллер базового класса должен был быть изменен вместе с другими в папке с образцами.

Я сделал $loader = require "vendor/autoload.php";

`$loader->add("", ["my folders"])` 

Все, что я испытал до сих пор в настоящее время, кажется, в порядке. Но я боюсь, что что-то пойдет не так позже, так как я не могу предсказать, что может сделать пользователь на сайте. Мне нужна помощь, кто угодно. Благодарю.

ответ

1

В принципе, вам необходимо следовать стандарту PSR-4, что означает только редактирование composer.json. Вам не нужно добавлять $loader->add("", ["my folders"]).

composer.json

"autoload": { 
    "*": "/dirs" 
} 

Но это лучше, чтобы быть конкретным, например:

"autoload": { 
    "App\": "app" 
} 

(Это как "пространство имен":. "Каталог можно найти в")

Затем App\Controller\PageController класс в app/Controller/PageController.php файл.


Вы можете также найти похожие вопросы => ВАРИАНТОВ ОТВЕТА here или here

+0

Что происходит с классами, которые не с пространствами имен, как я могу использовать PSR-4 для тех, кто? Просто любопытно. –

+0

Вы должны использовать пространство имен для каждого класса. Это цель PSR-0 и PSR-4. –