فضاهای نام (Namespaces)
«فضای نام (Namespace)» یعنی برچسب بندی کدها برای نظم و جلوگیری از تداخل نام ها. مثلا دو کلاس «Table» داریم؛ یکی برای HTML و یکی برای مبلمان. با فضای نام، هر کدام جدا می مانند.
تعریف فضای نام در PHP
فضای نام باید اول فایل بیاید. سپس همه چیزها زیر همان فضا هستند.
<?php
namespace Html;
?>
کلاس داخل فضای نام Html
اینجا کلاس Table در فضای Html تعریف می شود و نمونه سازی هم همان جاست.
<?php
namespace Html;
class Table {
public $title = "";
public $numRows = 0;
public function message() {
echo "<p>Table '{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new Table();
$table->title = "My table";
$table->numRows = 5;
?>
فضای نام تو در تو
می توانی فضای نام را تو در تو بسازی. این کار دسته بندی را دقیق تر می کند.
<?php
namespace Code\Html;
?>
استفاده از کلاس با نام کامل فضا
وقتی بیرون از فضا هستی، نام کامل را بنویس: Html\Class.
<?php
$table = new Html\Table();
$row = new Html\Row();
?>
کد داخل همان فضای نام
اگر ابتدای فایل namespace Html; گذاشتی، دیگر لازم نیست Html بنویسی.
<?php
namespace Html;
$table = new Table();
$row = new Row();
?>
نام مستعار (Alias) با use
نام مستعار برای فضای نام
برای کوتاه نویسی، فضای نام را با use خلاصه کن.
<?php
use Html as H;
$table = new H\Table();
?>
نام مستعار برای کلاس
می توانی فقط کلاس را هم خلاصه کنی و اسم جدید بدهی.
<?php
use Html\Table as T;
$table = new T();
?>
هشدار: دستور namespace باید اولین چیز در فایل باشد. قبل از آن کد PHP نیاور.
گام های عملی
- اول فایل بنویس:
namespace Html;. - یک کلاس بساز و متدی اضافه کن.
- بیرون فضا با
Html\Classنمونه بساز. - برای کوتاه نویسی از
useو نام مستعار استفاده کن.
برای ادامه معماری، بخش اینترفیس ها و خواص استاتیک را ببین. همچنین مرور متدهای استاتیک مفید است.
جمع بندی سریع
- فضای نام از تداخل نام ها جلوگیری می کند.
- اول فایل باید تعریف شود.
- بیرون فضا از نام کامل استفاده کن.
- با
useنام ها را کوتاه کن.