راکت
حل شده

Facade تو لاراول چیه

5 پاسخ

سلام
من با یه مفهمومی توی لاراول آشنا شدم به نام فساد که معنای فارسیش میشه "نما"
اول فک میکردم که همون Static توی oop هستش ولی بعدش متوجه شدم که اینطور نیست
برای درک بیشتر هسته میخوام بدونم کلا چجوری تعریف میشه و چرا لاراول ازش استفاده میکنه
ممنون میشم راهنمایی کنید

کیهان
کیهان
@keyhan
ثبت پرسش جدید

پاسخ‌ها

5
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

سوال بسیار خوبیه
و برای توضیحش هم درک خوبی از کارکرد قسمت های دیگه لاراول لازمه..

لاراول از ابزاری بهره میبره به نام IoC Container
که بهش Service Container هم میگند.
قسمت های مختلف (کلاس ها و غیره‌) فریم‌ورک میتونند با یک نام یا Alias درون container قرار بگیرند..
و اینجوری که شما میتونید با استفاده از هلپر app اون کلاس رو از container بگیرید و متدهاش رو اجرا کنید

مثلا اگر از دستور زیر استفاده کنی

app('db')

نمونه یا اینستنسی از کلاس زیر رو دریافت میکنی

Illuminate\Database\DatabaseManager

لاراول در حین بوت شدن کلید db رو داخل کانتینر bind میکنه و به این خاطره که در دسترس شما قرار داره.


حالا اگر هر کدوم از فساد هارو باز کنید میبینید که داخلش فقط یه متد هست یه نام getFacadeAccessor
که داخلش به کلیدی اشاره شده که داخل Container لاراول bind شده

پس میشه گفت:
فسادها یه API ساده و استاتیک برای دسترسی به متدهای داخل کلاس هایی هستند که داخل container لاراول bind شده اند

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

سلام، وقت بخیر.

بر اساس داکیومنتیشن لاراول:

Facades provide a "static" interface to classes that are available in
the application's service container.

فسادها، یک واسط static برای کلاس‌های موجود در Service Container هستند.

لاراول فسادهای زیادی داره، مثل Cache و View و خیلی موارد دیگه که قطعا توی لاراول ازشون استفاده کردید. خودتون هم می‌تونید از سرویس‌هایی که توی پروژتون دارید فساد بسازید و به جای:

$service = new MyService();
$service->doSomething();

از فساد استفاده کنید:

MyService::doSomething();

می‌بینید که متد doSomething به صورت static قابل استفاده شده.

همچنین یکی از مزایای استفاده از Facadeها اینه که کدتون تمیزتره و استفاده‌ی راحت‌تری دارن، همچنین توی تست‌نویسی و mockکردن می‌تونن مفید باشن. توصیه می‌کنم که حتما این صفحه رو بخونید:
https://laravel.com/docs/8.x/facades

Saman
Saman
@samanzdev

تخصص: برنامه نویس وب

با سلام
فاساد ها برای دسترسی بصورت static به سرویس های موجود درون اپلیکیشن مورد استفاده قرار میگیرند . فاساد های زیادی درون لاراول وجود دارد که شما بدون دانستن ساختار آن میتوانید از آنها استفاده نمایید . فاساد ، یک روش دسترسی به سرویس های موجود در اپلیکیشن می باشد و از طریق آن ها میتوانید متد های موجود در یک سرویس را بصورت استاتیک صدا بزنید یا به عبارت دیگر در لاراول ، یک فاساد به منظور دسترسی سریع به یک سرویس درون اپلیکیشن استفاده میشود . منطقی که این عملیات را انجام میدهد درون کلاس Facade پایه قرار دارد و هر فاسادی که شما میسازید باید از کلاس Facade پایه ، ارث بری کند .
ما در لاراول کلی فساد داریم، مثلا : DB - Route - Log و کلی فساد های دیگه
برای اینکه بیشتر با فساد ها در لاراول بشید به لینک زیر هم سر بزنید 👇
https://laravel.com/docs/8.x/facades
موفق و پیروز باشید
@keyhan

شاید پاسخ شما همین‌جا باشد

کیهان
کیهان
@keyhan

تخصص: PHP programmer

ممنون از راهنمایی دوستان 🙏

negar
negar
@negar

تخصص: اول راه

@ali.bayat توضیح جامع و کاملی بود ...

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام