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

Čist i provjerljiv kod

Pišemo kod koji drugi čovjek može pratiti, alat provjeriti, a test potvrditi bez pokretanja cijelog sustava.

28 min čitanja Srednje razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Primijeniti dosljedan stil i male odgovornosti.
  • Razlikovati statičku analizu, unit, integracijski i feature test.
  • Dizajnirati ovisnosti koje se u testu mogu zamijeniti.

Čitljivost je značajka

Imena, male cjeline i očit tok

Kod se češće čita nego piše. Ime treba otkriti namjeru, funkcija raditi jednu stvar, a komentar objasniti zašto odluka postoji. Dupliciranje ponekad je jeftinije od pogrešne apstrakcije; izdvojite zajednički kod kada je zajednički koncept stabilan.

PSR-12 daje zajednički stil, ali formatter rješava samo oblik. Arhitektonska jasnoća dolazi iz granica i odgovornosti.

Više sigurnosnih mreža

Lint, formatter i statička analiza

php -l hvata sintaksu. PHP_CodeSniffer ili PHP-CS-Fixer provjerava stil. PHPStan ili Psalm prate tipove i tokove koje runtime deklaracije same ne mogu otkriti. Analizu uvodite postupno, ali novom kodu ne spuštajte prag.

Composer scripts
{
  "scripts": {
    "lint": "php -l public/index.php",
    "analyse": "phpstan analyse",
    "test": "phpunit"
  }
}

Dokaz ponašanja

Brzi test pravila, realan test integracije

Unit test izolira malu poslovnu cjelinu. Integracijski test provjerava suradnju s bazom ili datotečnim sustavom. Feature test šalje zahtjev kroz aplikaciju. Najviše vrijednosti daju testovi važnih pravila, ovlasti i rubnih slučajeva, ne slijepo povećavanje postotka pokrivenosti.

Test poslovnog pravila
<?php

public function test_cannot_publish_article_without_title(): void
{
    $article = Article::draft('');

    $this->expectException(InvalidArgumentException::class);
    $article->publish();
}

Primijenite naučeno

Vježba: Testirajte kalkulator i autorizaciju

Dodajte testove na dva mjesta s različitim rizikom.

  1. Provjerite izračun cijene za nulu, popust i zaokruživanje.
  2. Provjerite da korisnik ne može urediti tuđu bilješku.
  3. Pokrenite cijeli skup jednom naredbom.

Za provjeru i nastavak

Službeni izvori