PHP – مفهوم Namespaces

Namespace‌ها در PHP چیستند؟ (What are PHP Namespaces?)

Namespace‌ها مشکلات مختلفی را حل می‌کنند:

  1. آن‌ها به سازمان‌دهی بهتر کمک می‌کنند با گروه‌بندی کلاس‌هایی که با هم برای انجام یک وظیفه همکاری می‌کنند.
  2. آن‌ها اجازه می‌دهند تا از یک نام برای بیش از یک کلاس استفاده شود.

به عنوان مثال، شما ممکن است یک مجموعه کلاس داشته باشید که یک جدول HTML را توصیف کند، مانند Table، Row و Cell و همچنین یک مجموعه کلاس دیگر که مبلمان را توصیف کند، مانند Table، Chair و Bed. Namespace‌ها می‌توانند برای سازمان‌دهی این کلاس‌ها به دو گروه مختلف و همچنین جلوگیری از تداخل دو کلاس Table و Table استفاده شوند.

اعلان یک Namespace (Declaring a Namespace)

Namespace‌ها در ابتدای یک فایل با استفاده از کلمه کلیدی namespace اعلام می‌شوند:

نحو (Syntax)

اعلان یک namespace به نام Html:

<?php
namespace Html;
?>

توجه: یک اعلان namespace باید اولین چیز در فایل PHP باشد. کد زیر نامعتبر خواهد بود:

<?php
echo "Hello World!";
namespace Html;
...
?>

ثوابت (constants)، کلاس‌ها و توابعی که در این فایل اعلام می‌شوند به namespace Html تعلق خواهند داشت:

مثال (Example)

ایجاد یک کلاس Table در namespace 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>

Namespace‌های تو در تو (Nested Namespaces)

برای سازمان‌دهی بیشتر، می‌توان از namespace‌های تو در تو استفاده کرد:

نحو (Syntax)

اعلان یک namespace به نام Html داخل یک namespace به نام Code:

<?php
namespace CodeHtml;
?>

استفاده از Namespace‌ها (Using Namespaces)

هر کدی که پس از یک اعلان namespace می‌آید، داخل namespace عمل می‌کند، بنابراین کلاس‌هایی که به namespace تعلق دارند می‌توانند بدون هیچ پسوندی نمونه‌سازی شوند. برای دسترسی به کلاس‌ها از خارج از یک namespace، کلاس باید دارای namespace پیوست شده به آن باشد.

مثال (Example)

استفاده از کلاس‌ها از namespace Html:

<?php
$table = new HtmlTable();
$row = new HtmlRow();
?>

وقتی تعداد زیادی کلاس از یک namespace استفاده می‌شود، استفاده از کلمه کلیدی namespace آسان‌تر است:

مثال (Example)

استفاده از کلاس‌ها از namespace Html بدون نیاز به Html:

<?php
namespace Html;
$table = new Table();
$row = new Row();
?>

نام مستعار Namespace (Namespace Alias)

مفید است که به یک namespace یا کلاس یک نام مستعار بدهید تا نوشتن آن آسان‌تر شود. این کار با استفاده از کلمه کلیدی use انجام می‌شود:

مثال (Example)

دادن یک نام مستعار به یک namespace:

<?php
use Html as H;
$table = new HTable();
?>

مثال (Example)

دادن یک نام مستعار به یک کلاس:

<?php
use HtmlTable as T;
$table = new T();
?>

خلاصه

Namespace‌ها به سازمان‌دهی کد کمک می‌کنند و از تداخل نام کلاس‌ها جلوگیری می‌کنند. با استفاده از کلمات کلیدی namespace و use می‌توان از namespace‌ها بهره‌برداری کرد و نام مستعار برای آن‌ها تعریف کرد تا کدنویسی راحت‌تر شود.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.