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 Code\Html;
?>

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

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

مثال (Example)

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

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

وقتی تعداد زیادی کلاس از یک 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 H\Table();
?>

مثال (Example)

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

<?php
use Html\Table as T;
$table = new T();
?>

خلاصه

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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