<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 19

Namespaces, Composer i autoloading

Organiziramo kod u namespaceove, automatski učitavamo klase i reproducibilno upravljamo vanjskim paketima.

25 min čitanja Srednje razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Objasniti namespace i PSR-4 mapiranje.
  • Inicijalizirati Composer projekt i koristiti autoloader.
  • Razlikovati composer.json od composer.lock.

Bez sudara imena

Puno ime klase opisuje njezin dom

Namespace sprječava sudar dviju klasa istog kratkog imena i pokazuje kojem dijelu aplikacije pripadaju. use uvozi puno ime radi čitljivosti; ne učitava datoteku. Jedna projektna klasa po datoteci pojednostavljuje autoloading.

src/Domain/Articles/Article.php
<?php

declare(strict_types=1);

namespace App\Domain\Articles;

final class Article
{
}

Ime postaje putanja

Composer pronalazi našu klasu

PSR-4 mapira prefiks namespacea na direktorij. Nakon promjene autoload konfiguracije pokrenite composer dump-autoload. Ulazna datoteka aplikacije jednom učitava vendor/autoload.php; ručni niz require poziva više nije potreban.

composer.json
{
  "require": {
    "php": "^8.5"
  },
  "autoload": {
    "psr-4": {
      "App\\": "src/"
    }
  }
}

Ponovljiva instalacija

Require, update i install nisu isto

composer require dodaje paket i rješava verzije. composer update ponovno izračunava dopuštene verzije i zapisuje composer.lock. composer install instalira točno zaključane verzije, zato ga koristimo u timu i produkciji.

Prije dodavanja paketa provjerite održavanje, licencu, sigurnosne objave i rješava li paket dovoljno velik problem. composer audit provjerava poznate ranjivosti ovisnosti.

public/index.php
<?php

declare(strict_types=1);

require dirname(__DIR__) . '/vendor/autoload.php';

use App\Domain\Articles\Article;

$article = new Article();

Primijenite naučeno

Vježba: PSR-4 kostur

Postavite mali App namespace i automatski učitajte jednu klasu.

  1. Izradite composer.json s App\ mapiranjem na src/.
  2. Pokrenite composer dump-autoload.
  3. U public/index.php učitajte autoloader i instancirajte klasu.

Za provjeru i nastavak

Službeni izvori