Uczymy się ustawiać autoload za pomocą composera i standardu PSR-4. Do dzieła.

Tworzymy nowy folder. W nim korzystamy z komendy:

composer init

Nie ustawiamy ani zależności ani zależności deweloperskich, ani autoloadingu automatycznego. Po wykonaniu komendy będziemy mieli plik composer.json:

{
    "name": "username/projectname2",
    "type": "project",
    "require": {}   
}

Tak powinien wyglądać. Teraz tworzymy strukturę projektu:

composer.json
--src:
----Framework:
--------App.php
----App:
--------bootstrap.php

W pliku App.php tworzymy prostą klasę o tej nazwie, zaznaczając namespace:

<?php

namespace Framework;

class App
{
    public function run(){
        echo "App is running";
    }
}

Teraz postarajmy się to zrozumieć:

<?php
namespace Framework;

class App
{
    public function run(){
        echo "App is running";
    }
}

//Class name - App
//Namespace prefix - Framework
//FULLY QUALIFIED CLASS NAME - \Framework\App
//File path - projectdir/src/Framework/App.php

Ok, teraz plik bootstrap.php:

<?php 
require __DIR__ . "/../../vendor/autoload.php";

use Framework\App;

$app = new App;
$app->run();

Oczywiście musimy ustalić autoloading w composer.json:

{
    "name": "author/someproject2",
    "type": "project",
    "require": {}, 
    "autoload": {
        "psr-4": {
        "Framework\\": "src/Framework",
        "App\\": "src/App"
        }
    }
}

Teraz możemy wykonać komendę:

composer dump-autoload

Możemy wejść pod adres pliku bootstrap.php (na razie nie blokowaliśmy w htaccess niczego) i zobaczyć, że wszystko działa, wszystko ładuje się automatycznie.