آموزش رایگان PHP

آموزش جامع Namespace در PHP به زبان ساده و کاربردی

1405/07/28 22:29 محراب حسن زاده
آموزش جامع Namespace در PHP به زبان ساده و کاربردی

مقدمه: Namespace در PHP چیست و چرا به آن نیاز داریم؟

تصور کنید در یک هارد دیسک، اجازه نداشته باشید فولدر بسازید و مجبور باشید تمام فایل‌های خود را در ریشه درایو ذخیره کنید. در این حالت، اگر دو فایل با نام report.pdf داشته باشید، سیستم‌عامل به شما اجازه ذخیره هر دو را در یک مکان نمی‌دهد. در دنیای برنامه‌نویسی PHP نیز وضع به همین منوال است.

وقتی پروژه‌های شما بزرگ‌تر می‌شوند یا از کتابخانه‌های جانبی (Package) استفاده می‌کنید، احتمال اینکه دو کلاس با نام کاملاً یکسان (مثلاً Database یا User) ایجاد شوند بسیار زیاد است. این مشکل را تداخل نام‌ها (Naming Collision) می‌نامند. از نسخه 5.3 به بعد، PHP مفهومی به نام Namespace (فضای نام) را معرفی کرد تا این مشکل را به طور کامل حل کند.

۱. نحوه تعریف یک Namespace در PHP

برای تعریف فضای نام، از کلمه کلیدی namespace در ابتدایی‌ترین بخش فایل PHP (قبل از هرگونه کد دیگر به جز دستور declare) استفاده می‌کنیم. به مثال زیر توجه کنید:


namespace App\Database;

class Connection {
    public function connect() {
        return "به پایگاه داده متصل شد!";
    }
}

در کد بالا، کلاس Connection درون فضای نام App\Database قرار گرفته است. حالا این کلاس از کلاس‌های هم‌نام در فضاهای نام دیگر کاملاً متمایز است.

۲. نحوه استفاده از کلاس‌های دارای Namespace

برای استفاده از کلاسی که درون یک فضای نام قرار دارد، سه روش اصلی وجود دارد:

روش اول: آدرس‌دهی کامل (Fully Qualified Name)

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


$db = new \App\Database\Connection();
echo $db--->connect();

روش دوم: استفاده از کلمه کلیدی use

این روش استانداردتر و تمیزتر است. با استفاده از use در بالای فایل، کلاس مورد نظر را وارد (Import) می‌کنیم:


use App\Database\Connection;

$db = new Connection();
echo $db--->connect();

۳. مستعار سازی (Aliasing) با کلمه کلیدی as

گاهی اوقات دو کلاس با نام یکسان را از دو فضای نام متفاوت وارد یک فایل می‌کنیم. برای جلوگیری از تداخل، می‌توانیم به یکی از آن‌ها یا هر دو یک نام مستعار اختصاص دهیم:


use App\Database\Connection as DbConnection;
use ExternalLib\Database\Connection as ExternalConnection;

$localDb = new DbConnection();
$extDb = new ExternalConnection();

۴. فضای نام سراسری (Global Namespace) چیست؟

توابع و کلاس‌های پیش‌فرض PHP (مثل Exception یا PDO) در فضای نام سراسری قرار دارند. اگر داخل یک فایل که دارای namespace است بخواهید از این کلاس‌ها استفاده کنید، باید یک بک‌اسلش (\) قبل از نام آن‌ها قرار دهید تا PHP بداند منظور شما فضای نام سراسری است:


namespace App\Services;

class Payment {
    public function charge() {
        // استفاده از کلاس Exception سراسری
        throw new \Exception("خطا در درگاه پرداخت");
    }
}

۵. استاندارد PSR-4 و Autoloading

در پروژه‌های مدرن PHP، هیچ‌گاه فایل‌ها را به صورت دستی require یا include نمی‌کنند. به جای آن، از استانداردی به نام PSR-4 استفاده می‌شود که نام‌گذاری فضاهای نام را مستقیماً به ساختار پوشه‌بندی پروژه متصل می‌کند. با استفاده از ابزار Composer، کلاس‌ها به طور خودکار بارگذاری می‌شوند که سرعت و ساختاریافتگی پروژه شما را به شدت بهبود می‌بخشد.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد
1404/09/28 21:41

آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد

مطالعه بیشتر
استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل
1403/08/16 21:48

استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل

مطالعه بیشتر
استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی
1403/08/10 21:59

استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش صفحه‌بندی اطلاعات در PHP به صورت اصولی و مطابق استانداردهای سئو گوگل
1405/05/13 21:21

آموزش صفحه‌بندی اطلاعات در PHP به صورت اصولی و مطابق استانداردهای سئو گوگل

مطالعه بیشتر
کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر
1403/08/16 22:45

کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر

مطالعه بیشتر
آموزش کامل توابع در PHP: از مقدماتی تا پیشرفته با استانداردهای گوگل
1405/04/16 01:02

آموزش کامل توابع در PHP: از مقدماتی تا پیشرفته با استانداردهای گوگل

مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها
1402/06/05 00:13

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

مطالعه بیشتر
کنترل زمان‌بندی و اندازه‌گیری دقیق انیمیشن‌ها در CSS: آموزش جامع و اصول استاندارد
1402/06/18 22:55

کنترل زمان‌بندی و اندازه‌گیری دقیق انیمیشن‌ها در CSS: آموزش جامع و اصول استاندارد

مطالعه بیشتر
آموزش ساخت افکت تصویر با تم اینستاگرام و انیمیشن چرخش دوره‌ای در CSS
1405/03/13 01:45

آموزش ساخت افکت تصویر با تم اینستاگرام و انیمیشن چرخش دوره‌ای در CSS

مطالعه بیشتر
آموزش توسعه بازی‌های ساده با استفاده از جاوا اسکریپت و Canvas API: راهنمای گام به گام
1403/08/05 21:06

آموزش توسعه بازی‌های ساده با استفاده از جاوا اسکریپت و Canvas API: راهنمای گام به گام

مطالعه بیشتر
آموزش قالب‌بندی متن در HTML: استفاده از تگ‌ها و CSS برای استایل‌دهی
1402/05/23 23:32

آموزش قالب‌بندی متن در HTML: استفاده از تگ‌ها و CSS برای استایل‌دهی

مطالعه بیشتر
آموزش جامع و استاندارد کار با آرایه‌ها در PHP (راهنمای گوگل)
1405/03/24 01:04

آموزش جامع و استاندارد کار با آرایه‌ها در PHP (راهنمای گوگل)

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد