با سلام ،شما گفتید که کاربرد use فقط در حد یک نام مستعار یا همون namespace ها هست که برای جلوگیری از تکرار
تو ساخت شی ما یکبار use میکنیم تاهرسری مجبور نباشیم بنویسیم و همچنین گفتید که use همان نام name space را استفاده میکند
پس خلاصه میشه اگر ما name space تعریف کردیم برای یک کلاس و اگر خواستیم از همان کلاس توی سند دیگری شی بگیریم برای جلو گیری از اینکه بنویسیم ()a=new application\controll\home
یکبار use میکنیم به اینصورت use application\controll
وبعد راحت مینویسیم ()a= new home
آیا تا اینجا درسته؟
------------------------------------------------------------------------
حالا سوال من اینه چرا برای کلاس های توکار php ،مثل PDO باید USE PDO بنویسیم؟؟ این کلاس ها که NAME SPACEجدا ندارند که موقع شی گرایی با مشکل روبرو بشیم .پس چرا باید use کنیم؟؟
با اجازه از استاد عزیز ؛
دوست عزیز به چند دلیل این کار رو میکینم :
1 - درسته pdo یک کلاس پیش ساخته php هستش اما برای استفاده حتما باید use بشه اگر قرار باشه از تمام کلاس های پیشفرض php استفاده بشه که حجم سیستم خیلی گرفته میشه و برنامه هم کند میشه به همین دلیل php دست ما رو باز گذاشته که بعضی از کلاس ها رو هر جا دوست داشتیم استفاده کنیم .
2 - شاید شما خواستین به عنوان برنامه نویس یه کلاس pdo که هیچ ربطی به دیتابیس نداره بسازید و بهش namespace خاص اختصاص بدین و ازش استفاده کنین .
3 - شما همش که نمی خواین از کلاس های پیش ساخته php استفاده کنین . مثلا همین pdo همیشه که نمیخواین به دیتابیس وصل بشین چون باید برنامه بهینه باشه .
برای گزینه 1 --- اگه منظور اینه که برای جلوگیری از اشغال حافظه باید اول USE کنیم تا PHP همه ی کلاس ها رو لود نکنه بلکه فقط اونایی که USE شده ، پس چرا تو صفحه ایندکس ما USE نمیکنیم بلکه مستقیم استفاده میکنیم
پس توضیحات گزینه 1 نقض شد که!!!
با سلام خدمت شما همراه عزیز
این کلاس ها هم بعضی namespace اختصاصی دارن اما در بعضی سیستم ها اجباری نیست استفاده کردن ازشون
مثلاهمین pdo
در سیستم عامل مک نیازی به use کردن نداره اصلا
پاسخ برای گزینه 1 :
ما توی صفحه index میایم و چند تا چیز رو مثه autoload و ... رو require می کنیم که توی اون فایلی که require کردیم کلاس هایی رو که مربوط به ارتباط با دیتابیس هستش رو فراخوانی کردیم که توی همون کلاس ها از pdo به نحوی استفاده شده .
مثلا توی این پروژه در یک کلاس خاص pdo تعریف شده و بقیه جا ها فقط میایم از این کلاس یک نمونه سازی انجام میدیم و دیگه دلیلی نداره از use pdo استفاده بشه .
ضمنا همین طور که استاد گفتن سیستم های unix به این use pdo احتیاجی نیست .
استاد میشه اینا رو چک کنید ببینید درست میگم یا نه
کاربرد use در شرایط مختلف
1- برای جلوگیری از نوشتن name space موقع شی گرایی جلوی کلمه کلیدی ...\....\....\.. new
2-برای ایجاد نام مخفف برای name space
3-وارد کردن یک کلاس global (کلاس های پیش ساخته php) در اسنادی بجز سند index ،چرا که فقط کلاس های مورد استفاده ما از بین هزاران کلاس ، import شوند
یعنی با اینکه کلاس هایی مثل PDO یا غیره ،BUILT_IN خود PHP هستند ولی برای شی گرفتن از این کلاس ها در همه صفحات به صورت ناشناخته اند مگر اینکه USE شوند (بجز صفحه INDEX که پیشفرض قابل دسترسی است)
4-وارد کردن traits ها داخل کلاس
این طرز فکر درسته آیا ؟؟
بله فقط تمامی کلاس ها نیاز به use شدن ندارن