کیهان
4 سال پیش توسط کیهان مطرح شد
5 پاسخ

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

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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
6

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

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

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

app('db')

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

Illuminate\Database\DatabaseManager

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


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

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


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
2

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

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

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
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش مطرح شد
1

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
6

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

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

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

app('db')

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

Illuminate\Database\DatabaseManager

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


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

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


کیهان
تخصص : PHP programmer
@keyhan 4 سال پیش مطرح شد
2

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


negar
تخصص : اول راه
@negar 4 سال پیش مطرح شد
0

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


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

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