Разбираем структуру autoload в composer.json


17:18, 21/03/2018

Прежде всего посмотрите внимательно tutorial:

Структура приложения сформированного с помощью composer:

RootDir
|   .htaccess
|   composer.json
|   composer.lock
|   index.php
|   
+---App
|       AppClass.php
|       
+---helpers
|       my_functions.php
|       
+---myClasses
|       MyClass.php
|       
\---vendor
    |   autoload.php
    ...

composer.json

...
"autoload": {
    "classmap": [
    "myClasses"
    ],
    "psr-4": {
    "App\\": "App/"
    },
    "files": [
    "helpers/my_functions.php"
    ]
}
...

Рассмотрим содержимое трёх папок

myClasses/MyClass.php – все классы внутри этой папки будут подключаться к приложению автоматически

class MyClass
{
    public function MyClassMethod()
    {
    return "MyClass => MyClassMethod";
    }
}

App/AppClass.php – необходимо объявить пространство имен namespaces

namespace App;

class AppClass
{
    public function AppMethod()
    {
    return "AppClass => AppMethod";
    }
}

helpers/my_functions.php – набор определенных вами функций доступных в любом месте приложения

function MyFunction() {
    return "MyFunction";
}

Всё в сборе в index.php

require_once __DIR__ . '/vendor/autoload.php';

// autoload : classmap
$app_class = new App\AppClass;
echo $app_class->AppMethod();

echo "
\n"; // psr-4 : App $my_class = new MyClass; echo $my_class->MyClassMethod(); echo "
\n"; // files : path to your custom functions file(s) echo MyFunction();

НЕ забываем после любых изменений в файлах или composer.json выполнить в консоли:

composer dump-autoload -o


Комментарии