فضاي نامي درphp دو مشكل را برطرف مي نمايد .
1ـ بااين امكان ميتوان با گروه بندي كلاسهائيكه براي انجام يك كار درارتباط هستند،آنهارا سازماندهي كرد.
2ـ باآن ميتوان ازنام يكسان براي بيش از يك كلاس استفاده نمود.
براي مثال ممكن است در يك مجموعه از كلاسها كه روي جداول كار ميكنند، سروكار داشته باشيد. كلاس هاي آن ميتواندtable,row و cel باشد .همچنين مجموعه اي ازكلاسهاي مبلمان مثل chair, bed وtable دراين صورت ميتوان با گروه بندي كلاسهاي اين دو فعاليت،آنرا سازماندهي نمود ودرضمن از تداخل دو كلاسtable در انها جلوگيري نمود.
دستور تعريف فضاي نامي بايد اولين دستور در فايل اسكريپت باشد .فضاي نامي با استفاده ازكي ورد namespaceانجام ميشود .
فرمت كلي تعريف فضاي نامي مطابق زير:
<?php namespace Html; ?>
نكته ـ همانطوريكه ذكر گرديد، تعريف فضاي نامي بايد اولين دستور فايل مورد استفاده باشد. بعنوان نمونه كد زير نادرست است.
<?php echo "Hello World!"; namespace Html; ... ?>
تعريف ثابت ها، كلاسها وتوابع بايد بدنبال دستور فوق قرار گيرند.
مثال ـ ايجاد يك كلاسtable در فضاي ناميHtml در اين مثال ثابت ها،كلاسها وتوابع اعلام شده بفضاي نامي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; ?> <!DOCTYPE html> <html> <body> <?php $table->message(); ?> </body> </html>
براي سازماندهي يشتر ميتوان فضاهاي نامي تودر تو.داشت.بعنوان نمونه فضاي ناميcode داخل فضاي ناميHtml كه فرمت تعريف مطابق زير است .
<?php namespace Code\Html; ?>
هر كدي كه بدنبالnamespace قرار گيرد، داخل فضاي نامي منظور ميشود .
فضاي ناميHtml داراي دو كلاسtable وrow ميباشد مطابق زيراست . اين اسكريپت در فايلHtml.php ذخيره گرديده است.
<?php namespace Html; class Table { public $title = ""; public $numRows = 0; public function message() { echo "<p Table '{$this->title}' has {$this->numRows} rows.</p>"; } } class Row { public $numCells = 0; public function message() { echo "<p The row has {$this->numCells} cells.</p>"; } } ?>
مثال ـ استفاده ازكلاسها از فضاي ناميHtml
<?php include "Html.php"; $table = new Html\Table(); $table->title = "My table"; $table->numRows = 5; $row = new Html\Row(); $row->numCells = 3; ?> <html> <body> <?php $table->message(); ?> <?php $row->message(); ?> </body>