در برنامه‌های پیشرفته باید از namespace‌ها استفاده کنید، که در این جا شما را با namespace‌ها آشنا می‌کنیم.

در پوشه پروژه خود دو فایل با نام‌های class1.php و class2.php ایجاد کنید. سورس زیر را در هر دو فایل قرار دهید:

<?php
class Test{
	public $name = __FILE__;
}
?>

دستور __FILE__ آدرس نام و مسیر فایل جاری سورس را در خروجی چاپ می‌کند.

در همان مسیر یک فایل با نام index.php ایجاد کرده و سورس زیر را در آن بگذارید:

<?php
require "class1.php";
require "class2.php";

$Test = new Test();
echo $Test->name;
?>

در هنگام اجرای فایل index.php با خطا مواجه می‌شویم که می گوید کلاس Test تکراری است.

برای حل این مشکل به ابتدای فایل class1.php رفته و سورس آن را به شکل زیر ویرایش می‌کنیم:

<?php
namespace test1;
class Test{
	public $name = __FILE__;
}
?>

سورس class2.php را نیز به شکل زیر ویرایش می‌کنیم:

<?php
namespace test2;
class Test{
	public $name = __FILE__;
}
?>

توجه کنید که namespace را باید بلافاصله پس از <?php بیاورید.

در فایل index.php برای دسترسی به کلاس‌ها به شکل زیر عمل می‌کنیم:

<?php
require "class1.php";
require "class2.php";

$Test = new test1\Test();
echo $Test->name;
?>

همانطور که در بالا می‌بینید پیش از ذکر نام کلاس از عبارت پس از namespace و سپس کاراکتر \ استفاده می‌کنیم.

حال بدون مشکل می‌توانید به کلاس‌ها دسترسی پیدا کنید.

بدین ترتیب می‌توانید به سادگی کلاس‌های فولدر‌ها و شاخه‌های مختلف را فراخوانی کرده و آن‌ها را با نام namespace فراخوانی کنید.

البته طبق یک قرار داد بهتر است namespace را با نام و مسیر فایل ایجاد می‌کنیم. مثلا:

namespace project\controller\class1;

 برای استفاده کاربردی از مبحث namespace‌ها آموزش Composer را در این لینک ببینید.