Namespaces organise code into logical groups and prevent naming collisions between your code and third-party libraries.
<?php
// File: src/Models/User.php
namespace App\Models;
class User {
public function __construct(public readonly string $name) {}
}
<?php
// Full qualified name (no import needed)
$user = new \App\Models\User("Alice");
// With use statement
use App\Models\User;
$user = new User("Alice");
// Alias
use App\Models\User as UserModel;
$user = new UserModel("Alice");
use App\Models\{User, Post, Comment};
use App\Services\{Mailer, Notifier};
$user = new User("Alice");
$mailer = new Mailer();
namespace App\Utils;
const VERSION = "1.0.0";
function formatDate(string $date): string {
return date("d M Y", strtotime($date));
}
// Elsewhere:
use function App\Utils\formatDate;
use const App\Utils\VERSION;
echo formatDate("2024-05-01"); // 01 May 2024
echo VERSION; // 1.0.0