একটি project-এ হাতেগোনা কয়েকটার বেশি ক্লাস হলেই — বা কোনো external package ব্যবহার করলেই (সামনের Composer lesson-এ কভার করা), একই নামের দুটি ক্লাস একটি আসল ঝুঁকি। একটি namespace সেই সংঘর্ষ প্রতিরোধ করে।
একটি namespace declaration একটি PHP file-এর একদম প্রথম statement হতে হবে।
<?php
namespace App\Models;
class User {
// এই ক্লাসের পুরো নাম App\Models\User
}<?php
namespace App\Models;
class User { /* ... */ }
namespace App\Auth;
class User { /* ... */ } // সম্পূর্ণ ভিন্ন একটি ক্লাস,
// পুরো নাম App\Auth\User —
// কোনো নাম সংঘর্ষ নেই<?php
namespace App\Controllers;
use App\Models\User;
$user = new User(); // App\Models\User-এ resolve হয়ভিন্ন namespace-এর দুটি ক্লাস অন্যথায় একই ছোট নাম শেয়ার করলে useful।
use App\Models\User;
use App\Legacy\User as LegacyUser;
$user = new User();
$oldUser = new LegacyUser();Namespace সাধারণত folder mirror করে
প্রায় প্রতিটি modern PHP project অনুসরণ করা convention — আর Composer-এর autoloading (পরের lesson) যেটা আশা করে — folder structure-এর সাথে মেলা একটি namespace: App\Models\User থাকে app/Models/User.php-তে।