در برنامههای پیشرفته باید از 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 را در این لینک ببینید.