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.