Задать вопрос

В чем удобство подключения своих классов с помощью composer?

В общем и целом я понимаю, как и зачем используют 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?
Что я делаю не так?
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы