Как подружить composer autoload с моим autoloader'ом
У меня есть такая структура
В core.php у меня есть такой автозагрузка классов
<?php
// auto load classes
spl_autoload_register(function ($class_name) {
include './classes/' . $class_name . '.php';
});
А мне нужно использовать библиотеку Ratchet. Те нужно подключить файл require 'vendor/autoload.php';
НО если его подключить, то он конфликтует с моим загрузчиком
Ответы (1 шт):
Правилом хорошего тона является включение в composer загрузка и собственных классов проекта. Composer поддерживает несколько стандартов именования (и расположения) файлов, но самый продвинутый - это PSR-4 (другие). Для подключения своих классов в файле composer.json необходимо сделать секцию autoload (пример ниже)
"autoload": {
"psr-4": {
"PAMI\\": "src/marcelog/PAMI"
},
"classmap": [
"src/sibvision"
]
},
Для включения классов в загрузку достаточно выполнить команду composer dumpautoload
Пример пути: У нас есть файл-класс src/MyProject/MyClass.php (начала пути идёт от каталога с файлом composer.json) c cодержимым:
namespace MyProject;
class MyClass
{
...
}
Значит в автозагрузке пишем "MyProject\\": "src/MyProject"
В своём коде вы будете писать new \MyProject\MyClass(); или с использование use
use MyProject\MyClass;
new MyClass();
