Как создать автозагрузчик PSR-4 для моего проекта?

Я создаю проект PHP и хочу реализовать автозагрузку PSR-4.

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


person Kshitij Verma    schedule 29.03.2020    source источник


Ответы (1)


Если вы используете composer, вы не создаете автозагрузчик, а позволяете composer выполнять свою работу и создавать его за вас.

Единственное, что вам нужно сделать, это создать соответствующую конфигурацию на composer.json и выполнить composer dump-autoload.

E.g.:

{
    "autoload": {
        "psr-4": {"App\\": "src/"}
    }
}

Выполнив вышеуказанное, если у вас есть такая файловая структура

├── src/
│   ├── Controller/
│   ├── Model/
│   ├── View/
│   └── Kernel.php
├── public/
│   └── index.php
└── vendor/

После выполнения composer dump-autoload автозагрузчик будет создан на vendor/autoload.php.

Все ваши классы должны быть вложены в пространство имен App, и вы должны поместить только один класс для каждого файла.

E.g.:

<?php /* src/Controller/Home.php */

namespace App\Controller;

class Home { /* implementation */ }

И вам нужно только включить автозагрузчик в сценарий точки входа (например, index.php).

<?php

require '../vendor/autoload.php';

Это позволит вам просто загружать свои классы прямо из любого места после этого момента, например:

use App\Controller\Home;

$homeController = new Home();

Это объясняется в документации, здесь.

person yivi    schedule 01.04.2020
comment
Прекрасный ответ. - person dakis; 04.04.2020
comment
Спасибо @dakis. Я впечатлен наградой. Это вдохновляет меня еще больше стараться над своими будущими ответами. - person yivi; 05.04.2020