تاریخ امروز:6 اردیبهشت 1403
چرخه عمر یا lifecycle یک ریکوئست در لاراول چیست؟

چرخه عمر یا Lifecycle یک ریکوئست در لاراول چیست؟

یکی از سوالاتی که در اکثر موارد استخدامی برای پوزیشن لاراول پرسیده میشه بحث چرخه عمر لاراول و یا همون Lifecycle هستش. مطلبی که خدمتتون ارائه میشه بر اساس داکیومنت خود لاراول هستش. چرخه عمر لاراول و یا Laravel Lifecycle منظور اتفاقاتی است که از زمان ارسال درخواست (باز کردن سایت لاراولی) تا موقعی که کاربر وبسایت را کامل ببینید درون فریم‌ورک لاراول می افتد.

چرخه عمر یا lifecycle یک ریکوئست در لاراول

چرخه عمر یا lifecycle یک ریکوئست در لاراول

مرحله اول از چرخه عمر ریکوئست (Request Lifecycle) لاراول

مرحله اول از چرخه عمر لاراول با ارسال درخواست به سمت وب سرور شروع می‌شود. ابتدا هر درخواستی که به سمت سرور ارسال می‌شود توسط وب سرور شما پردازش شده و به فایل public/index.php می‌رسد. درون این فایل کد زیادی موجود نیست ولی نقطه‌ی شروعی است برای راه‌اندازی فریم‌ورک شما. این فایل در ابتدا چک می‌کند که سیستم شما در حالت Demo یا Maintenance نباشد.

برای اینکه حالت Demo یا Maintenance را کنترل کنیم از دو دستور زیر استفاده می‌کنیم:

php artisan down
php artisan up

بعد از چک کردن حالت Demo یا Maintenance، فایل autoloader لود می‌شود. این فایل  Composer Autoloader رو بارگزاری می‌کنه. کار این فایل در واقع لود کردن فایل‌های کلاس‌ها و … لاراول هستش. پس از این فایل، فایل bootstrap/app.php لود می‌شود. کار این فایل راه اندازی اولیه فریم‌ورک لاراول هستش. این فایل در واقع شی‌ اصلی لاراول رو در متغیری به اسم $app برای ما میسازد و تنظیمات مربوطه رو انجام میده برامون.

مرحله دوم از چرخه عمر ریکوئست (Request Lifecycle) لاراول

در پایان مرحله اول از چرخه عمر لاراول، سیستم تصمیم می‌گیرد که ریکوئستی که به سمت سرور آمده است از نوع Console هستش یا HTTP. اگر از نوع Console بود، app/Console/Kernel.php لود میشه و اگر از نوع HTTP بود فایل app/Http/Kernel.php لود می‌شود.

در مورد HTTP، این فایل یک کلاس دارد که کلاس Illuminate\Foundation\Http\Kernel را گسترش می‌دهد. با این کار در واقع سیستم‌‌های لاگ، خطایابی، شناسایی تنظیمات و سایر کارهایی که قبل از هندل شدن ریکوئست توسط لاراول مورد نیاز است را انجام می‌دهد. این فایل همچنین لیستی از middleware هایی که برنامه ما قبل از اجرای ریکوئست باید آن‌ها را انجام دهد را نیز در خود دارد. مواردی چون چک کردن  HTTP Session، چک کردن توکن CSRF، در حالت تعمیر بودن برنامه و … .

کلیت کار این HTTP Kernel بسیار ساده است. یک درخواست HTTP می‌گیرد و در نهایت یک درخواست HTTP را برمیگرداند.

مرحله سوم از چرخه عمر ریکوئست (Request Lifecycle) لاراول

مرحله بعدی از چرخه عمر Service Provider ها هستن. در config/app.php‌ آرایه‌ای وجود دارد که این موارد را کنترل می‌کنند. در هر Service Provider ابتدا متد register و سپس متد boot فعال می‌شود. این Service Provider ها وظیفه راه‌اندازی تمامی اجزای فریمورک لاراول مانند پایگاه‌داده، صف‌ها، سیستم اعتبارسنجی و اجزای مسیریابی را بر عهده دارند.

مرحله چهارم از چرخه عمر ریکوئست (Request Lifecycle) لاراول

یکی از مهمترین Service Provider های لاراول، Router می‌باشد. این فایل در مسیر app/Providers/RouteServiceProvider.php قرار دارد و وظیفه لود کردن سیستم روتر لاراول را دارا می‌باشد. پس از آنکه اجزای لاراول بارگزاری شد، از طریق این سرویس پروایدر ریکوئست سمت روتر رفته و پس از اعمال Middleware های مربوطه بر روی آن، به سمت کنترلر می‌رود. در آنجا کنترل پس از پردازش یا خواندن و نوشتن در دیتابیس (اتصال به Model) یک Response که می‌تواند به صورت View باشد یا Json یا … برگردانده می‌شود.

مرحله پنجم از چرخه عمر ریکوئست (Request Lifecycle) لاراول

پس از بازگشت Response از طرف کنترلر، این Response دوباره در اختیار روتر قرار می‌گیرد تا Middleware هایی که بعد از ریکوئست باید اجرایی شوند را اجرا کند و این پاسخ از کنترلر را اصلاح یا بررسی کنند. سپس مقدار به HTTP Kernel بازگشت داده می‌شود.

HTTP Kernel پاسخ را به index.php برمیگرداند و این فایل متد send را صدا می‌زند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *