Namespaces

🔹 Namespace چیست؟

  • وقتی پروژه بزرگ میشه، ممکنه چندین کلاس یا تابع با نام یکسان وجود داشته باشه.

  • برای جلوگیری از تداخل نام‌ها، از Namespace (فضای نام) استفاده می‌کنیم.

  • Namespace مثل یک "پوشه" برای کدها عمل می‌کنه.

🔹 تعریف یک Namespace

<?php namespace MyProject; class User { public function __construct() { echo "User from MyProject namespace"; } }

📌 حالا این کلاس در فضای نام MyProject قرار داره.

🔹 استفاده از کلاس داخل Namespace

  1. با نام کامل (Fully Qualified Name):

<?php namespace MyProject; class User { public function __construct() { echo "User from MyProject namespace"; } } // خارج از namespace $obj = new \MyProject\User();

📌 خروجی:

User from MyProject namespace
  1. با استفاده از use

<?php namespace MyProject; class User { public function __construct() { echo "User from MyProject namespace"; } }

و در فایل دیگر:

<?php use MyProject\User; $obj = new User();

🔹 چند Namespace در یک فایل

<?php namespace FirstNamespace; class A { public function show() { echo "Class A in FirstNamespace"; } } namespace SecondNamespace; class A { public function show() { echo "Class A in SecondNamespace"; } } // استفاده $obj1 = new \FirstNamespace\A(); $obj1->show(); echo "<br>"; $obj2 = new \SecondNamespace\A(); $obj2->show(); ?>

📌 خروجی:

Class A in FirstNamespace Class A in SecondNamespace

🔹 Alias (نام مستعار برای Namespace)

برای راحتی می‌تونیم از alias استفاده کنیم:

<?php use FirstNamespace\A as FirstA; use SecondNamespace\A as SecondA; $obj1 = new FirstA(); $obj2 = new SecondA();

✅ خلاصه

  • Namespace برای جلوگیری از تداخل نام‌ها استفاده میشه.

  • می‌تونیم با use یا alias کار رو ساده‌تر کنیم.

  • مثل یک پوشه‌بندی برای کلاس‌ها، توابع و ثابت‌هاست.