۲ هادی قاسمی
nameSpace ها
امیر صالحی حل شده توسط امیر صالحی

سلام بر استاد عزیز 

سوالی ک برام پیش اومده اینه ک ضرورت استفاده از nameSpace‌ها چیه ؟ منظورم اینه ک میتونیم اسم مستعاری ک در use استفاده میشه رو همون اول به اسم کلاس و فایل اضافه کنیم و دیگه نیازی ب nameSpace‌ها نیست

 

و سوال دیگه ای ک داشتم این بود ک توی یکی از ویدئو‌ها گفتین ممکنه توی پروژه‌های شی گرایی 10 کلاس به یک اسم داشته باشیم ، ضرورت اینکار چیه ؟ چون از نظر من باعث سردرگمی خودمون میشه

سلام و احترام

namespace‌ها اومدن که ما بتونیم چندین فایل رو حتی با اسامی مشابه استفاده کنیم. خب ما اینجا برگشتیم به سوال شما. ببین دوست عزیز خیلی خیلی احتمالش زیاده که شما کلاس هایی با نام‌های شبیه به هم داشته باشید، مثلا کجا؟

فرض کنید شما یه کلاس دارید به اسم User توی مدل‌های (model) خودتون و از یک طرف شما اومدی یک پکیج نصب کردی که بر فرض مثل این پکیج هم از namespace استفاده نکرده، حالا توی اون پکیج هم کلاس‌هایی با نام user وجود داره.

لپ کلام اینکه، یه موقع لازم میشه شما این ۲ - ۳ کلاس رو توی یک فایل استفاده کنی، حالا چه اتفاقی میوفته؟

شما ۲ - ۳ کلاس هم نام دارید که به تداخل خوردن و نرم افزار شما نمیتونه تشخیص بده که دقیقا از کدوم استفاده کنه و شما قطعا با ارور مواجه میشید. 

namespace اینجا میشه چاره‌ی کار، چون شما میتونی انتخاب کنی که کدوم کلاسو میخوای استفاده کنی.

 

در آخر یه مثال دیگه هم بگم.

فکر کن داری روی یه پروژه کار میکنی، این پروژه ۲ نوع کاربر داره با نام‌های admin - user حالا این دو تا هر کدوم یه کلاس به اسم Project دارن که با اونا پروژه‌های خودشون رو مدیریت میکنن، حالا فکر کن این دو تا توی یه پوشه باشن و namespace نداشته باشن یا اینکه قراره این دوتا کلاس توی یک پروژه دیگه استفاده بشن. اینجا باعث میشه که تداخل به وجود بیاد.

باز اگه سوالی بود بپرس من در خدمتم

موفق باشی  

بهترین پاسخ
امیر صالحی ۱۸ مهر ۱۳۹۹، ۱۸:۰۱

خواهش میکنم.

ببینید اگه قرار باشه از این قضیه فرار کنیم باعث میشه که یه سری اسمای عجیب غریب برسیم که شاید بعدا هم نتونیم تشخیص بدیم که این کلاس چی بوده و از یه طرف دیگه هم داریم قوانین رو هم میشکونیم که باعث میشه کد ما کثیف و غیر منطقی در بیاد. مثلا توی فریم ورکی مثل لاراول برای نام گذاری namespaceها از قوانین psr-4 استفاده میشه تا لود کردن فایل‌ها آسون باشه و کلاس‌ها تفکیک شده باشن.

امیر صالحی ۱۸ مهر ۱۳۹۹، ۱۸:۳۹