Scrierea de cod PHP profesional presupune respectarea principiilor de arhitectură software SOLID și a standardelor definite de grupul PHP-FIG (PHP Framework Interop Group), în special standardul de încărcare automată a claselor PSR-4.
<?php
declare(strict_types=1);
namespace App\Services;
// 1. Contractul / Interfața: decuplează logica de business de implementarea concretă
interface NotificareSenderInterface {
public function trimite(string $destinatar, string $mesaj): bool;
}
// 2. Implementare concretă 1 (Email via SMTP)
class EmailNotificareSender implements NotificareSenderInterface {
public function trimite(string $destinatar, string $mesaj): bool {
// Trimitere email...
return true;
}
}
// 3. Implementare concretă 2 (SMS)
class SmsNotificareSender implements NotificareSenderInterface {
public function trimite(string $destinatar, string $mesaj): bool {
// Trimitere SMS...
return true;
}
}
// 4. Clasa de business injectează interfața (Inversion of Control - IoC)
class ComandaService {
// Constructor Property Promotion + Type Hinting pe interfață
public function __construct(
private readonly NotificareSenderInterface $notificator
) {}
public function finalizeazaComanda(int $comandaId, string $contact): void {
// Procesare comandă...
$this->notificator->trimite($contact, "Comanda #{$comandaId} a fost confirmată!");
}
}
// Instanțiere flexibilă (ușor de testat cu obiecte Mock în teste unitare!):
$service = new ComandaService(new EmailNotificareSender());
$service->finalizeazaComanda(1042, 'client@exemplu.ro');
Structurarea Fișierelor prin Standardul PSR-4 și Composer
În fișierul composer.json, asociază spațiul de nume (namespace) cu directorul de fișiere:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
După rularea comenzii composer dump-autoload, o clasă cu namespace-ul App\Services\ComandaService va fi localizată și încărcată automat de către PHP din fișierul fizic src/Services/ComandaService.php, fără a fi nevoie de instrucțiuni manuale require_once.