What Are PHP Namespaces and Why Do You Need Them?
PHP namespaces prevent class and function name collisions between libraries. Learn the namespace/use syntax and how PSR-4 autoloading relies on them.
Published September 18, 2026
A namespace is a way of grouping related classes, functions, and constants under a named prefix, so that two libraries can each define a class called, say, Request, without colliding.
Common causes
- Before namespaces (PHP 5.3+), all classes lived in one global scope, so any two libraries defining a class with the same name would fatally conflict
How to fix it
- Declare a namespace at the top of a file with 'namespace App\Http\Controllers;' as the very first statement
- Import a class from another namespace with 'use App\Models\User;' so it can be referenced by its short name in the current file
- Rely on PSR-4 autoloading (as configured in composer.json) to map namespaces directly to folder structure, so 'App\Models\User' resolves to app/Models/User.php
Example
// app/Models/User.php
namespace App\Models;
class User {}
// elsewhere
use App\Models\User;
$u = new User();FAQ
Do namespaces affect performance?
No — namespaces are purely a compile-time/organizational construct. They only affect how names resolve, not runtime execution speed.