Namespace چیست و نحوه استفاده از Namespace در لاراول


به درخواست یکی از دوستان این مطلب رو در مورد فضای نام  (namespace) درلاراول  آماده کردم که خدمت  دوستان ارائه می کنم

برای درک چگونگی ساختار برنامه خود  مخصوصا لاراول 5 ، شما باید مفهوم namespacing را  به خوبی درک کنید.

اول یک توضیحاتی در مود خود namespace  که کلا چی هست و به چه دردی می خوره ( شاید این قسمت برای بعضی دوستان کمی خسته کننده باشد اما  باید گفت ، شاید بعضی دوستان زیاد آشنا نباشن ) عرض می کنم .

به شکل ساده میتوان گفت Namespace( فضای نام ) به منظورطبقه‌ بندی   گروهی از متغییر ها ، توابع و کلاس ها استفاده می شود . یعنی هر شناسه ای اعم از اسم متغیر، اسم تابع، اسم کلاس و هر چیز دیگه توی این فضا فقط توسط سایر اعضای  مشترک شده (استفاده کننده) این فضا به صورت مستقیم در دسترس هست.

برای درک بهتر این مطلب را  با یک مثال  از Namespace ادامه می دم   ، اینکه اگر از Namespace در برنامه نویسی پروژه  با فریم ورک لاراول یا  هر فریم ورکی غیر از لاراول  استفاده کنیم چه مزایایی داره و اگر استفاده نکنیم چه مشکلاتی خواهیم داشت

فرض کنید شما در حال نوشتن یک CMS برای یک وب سایت مدرسه هستید ، شما ممکن است یک کلاس  مدیر(admin)  برای مدیریت کاربرمدیر  CMS  داشته باشید روی که سایت کنترل داشته باشد، حالا در نظر بگیرید که هر مدرسه یک نفر مدیر دارد برای نظارت روی اعمال کارکنان ، معلمان و دانش آموزان پس یک کلاس مدیر(admin) هم برای مدرسه داریم  ،  حالا در نظر بگیرید که می خواهیم یک  مدیر مدرسه اضافه  کنیم تشخیص اینکه ما در مورد کدام یک از این مدیر ها صحبت می کنیم  به عهده   namespace  هست که ما را از گمراهی   و اشتباه به دور می کند .

به طور کلی، فقط یک کلاس می تواند با یک نام خاص در یک محدوده خاص وجود داشته باشد. بنابراین داشتن دو کلاس هر دو به نام مدیر(admin) در محدوده یکسان ممکن نیست . یک namespace محدوده را تعریف می کند به طوری که دو کلاس  با نام  مدیر(admin) می توانند در namespace متفاوت وجود داشته باشند .

به عبارت ساده تر یک دسته کلاس های مرتبط به هم رو داخل یک namespace قرار می دهیم ،  مشکل هم نام بودن نام کلاس ها و متدها را هم حل می شود .

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

1

استفاده از namespace  در لاراول بسیار گسترده است ،  Application  و کلاس های Kernel  فقط چند نمونه  ساده استفاده از آن می باشد.

1

 

Namespace  در لاراول

اگر به محتویات فایل  composer.json  نگاه کنید، یک شی با مالکیت autoload.psr-4 را پیدا  خواهید کرد .

 

1

ما دراینجا به Composer  می گوییم که autoloader  را با استاندارد PSR-4   ، برای namespace با عنوان  App تنظیم کند .

آرایه autoload.classmap   مشخص کننده دایرکتوری می باشد که کلاس های ضمیمه پروژه در آن قرار می گیرند .

 

  تغییر Namespace در  لاراول

برای این کار از Artisan کمک می گیریم ، عملیات زیر را در خط فرمان اجرا می کنیم .

نام تعیین شده ما برای پروژه LaraWork می باشد .

 

1

 

حال مجددا به فایل  composer.json  برمی گردیم  و می بینم که  مقدار مشخص شده برای namespace تغییر کرده است .

 

1