В общем и целом я понимаю, как и зачем используют Composer.
Мы загружаем с помощью него фреймворки, библиотеки, зависимости (прописанные в файле composer.json).
Раньше я не использовал неймспейсов писал код в классах.
Например
class1.php
class class1
{
// Методы класса.
}
class2.php
class class1
{
// Методы класса.
}
и так куча классов.
Далее создавал файл classes.php, куда подключал все классы.
classes.php
include_once __DIR__.'/class1.php';
include_once __DIR__.'/class2.php';
И этот файл подключал во все файлы проекта.
include_once __DIR__.'/classes.php';
Просто, удобно, 1 строка.
Сейчас использую композер, неймспейсы (прописываю в классах), psr-4 т.к. всем надо композер (стандарт же).
Делаю маппинг неймспейсов на директорию
composer.json
{
"require": {
"php": "^7.4"
},
"autoload": {
"psr-4": {
"myproject\\classes\\": "classes"
}
}
}
Работает - но что смущает.
Смущает, то что теперь вместо одной строки
include_once __DIR__.'/classes.php';
мне надо писать что то вроде этого:
namespace myproject\templates;
include_once __DIR__.'/../vendor/autoload.php';
use myproject\classes\Address;
use myproject\classes\Data;
use myproject\classes\Files;
use myproject\classes\HTML;
use myproject\classes\MySQL;
use myproject\classes\Security;
use myproject\classes\Settings;
use myproject\classes\TechmapTable;
use myproject\classes\User;
это если нужны все классы.
Да, не всегда они все нужны, бывает и
namespace myproject\templates;
include_once __DIR__.'/../vendor/autoload.php';
use myproject\classes\Address;
use myproject\classes\Data;
Но всё равно, что то не то. В фреймворках вижу
namespace app\models;
use Yii;
use yii\base\Model;
но не такие портянки как у меня. Да и композера не видно.
В чем удобство подключения своих классов с помощью composer?
Что я делаю не так?