Start · Sprachen · PHP · Kapitel · Namespaces & Autoloading
// Kapitel · PHP

Namespaces & Autoloading

Namespaces trennen Code in logische Gruppen. PSR-4-Autoloading via Composer sorgt dafür, dass du nie wieder require_once schreibst.

Namespace deklarieren

// app/Models/User.php
<?php

namespace App\Models;

class User
{
    // ...
}

Namespace nutzen

<?php

namespace App\Http\Controllers;

use App\Models\User;
use App\Services\Mailer as MailService;
use Illuminate\Support\Str;

class RegisterController
{
    public function store(): void
    {
        $user = User::create([...]);
        MailService::welcome($user);
    }
}

PSR-4-Autoloading mit Composer

In der composer.json mappst du Namespaces auf Verzeichnisse:

{
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Seeders\\": "database/seeders/"
        }
    }
}

Nach composer dump-autoload findet PHP jede Klasse automatisch. App\Http\Controllers\RegisterControllerapp/Http/Controllers/RegisterController.php.

Aliasing bei Namenskollisionen

use App\Models\User;
use App\Services\User as UserService;   // Alias
use function Str\slug;                   // Funktion importieren
use const HTTP\STATUS_OK;                // Konstante importieren