چرخه Request ها در لاراول ( Request Life Cycle of Laravel )

هنگامی که شروع به کار بر روی یک فریمورک می کنیم ، ابتدا باید دقیقاً بدانیم که چگونه کار می کند. این دانش کار ما را برای استفاده از این بستر فریمورک راحت تر می کند.این نوشته به شما کمک می کند تا با چرخه درخواست ها در لاراول Request Life Cycle of Laravel آشنا شوید ، یعنی به درک نحوه چگونگی پردازش درخواست ها در مراحل مختلف و ارائه پاسخ به کاربر ، به شما کمک کند. ما برای درک بهتر این روش را به صورت مرحله به مرحله بررسی خواهیم کرد.مرحله اول : Auto Loaderبه عنوان اولین مرحله ، درخواست از مرورگر کاربر شروع می شود ، سپس به سرور وب می رسد. سرور وب (Apache یا Nginx) درخواست داده شده را به فایلی در مسیر Laravel public / index.php هدایت می کند که یک نقطه شروع برای بارگذاری بقیه فریمورک است. این فایل autoloader ای که توسط composer ساخته شده است را لود میکند.سپس با لود شدن autolader ، نمونه ای از برنامه Laravel از اسکریپت bootstrap / app.php بازیابی میشود. یعنی در اولین مرحله ، لاراول خودش نمونه ای از برنامه را ایجاد می کند. بطور مثال بوت استرپ را در این مرحله میشود اینگونه تشبیه کرد که وقتی بعنوان راننده سوار میشید، اولین مرحله چک کردن آینه ها و بستن کمربند و .... میباشد. مرحله دوم: Kernelمرحله بعدی در قسمت هسته برنامه( KERNEL) اعمال خواهد شد.بسته به نوع درخواستی که وارد برنامه می شود ، درخواست دریافتی به HTTP kernel یا console kernel ارسال می شود.این دو نوع KERNEL به عنوان مکان اصلی برای اجرای همه درخواست ها میباشند.هسته یا کرنل HTTP ، در برنامه Http / Kernel.php قرار داده شده است. این kernel فقط یک درخواست دریافت می کند و یک پاسخ ارسال می کند. بوت استرپرهایی که توسط کلاس Kernel تعریف شده اند ، مسئولیت رسیدگی به خطا ، پیکربندی ورود به سیستم (configure logging) ، مسیریابی های تعریف شده در فایل env و سایر کارهایی را که باید قبل از انجام درخواست ارسالی انجام شود را برعهده دارد . کرنل HTTP همچنین لیستی از middleware هایی که قبل از استفاده از برنامه باید مورد توجه قرار بگیرد را نیز تعریف خواهد کرد. مرحله سوم: Service Providersمرحله بعداز گذشتن از kernelها، لود کردن ارائه دهندگان خدمات (Service Providers) هستند که بخشی از عملکرد های bootstrapping میباشند. Service Providers مورد نیاز برای برنامه در فایل onfig/app.php قرار دارند.همینطور که متدهای تعریف شده صدا زده میشوند، تمام providers ثبت می شوند. پس از ثبت و تعریف همه ی providers ، روش های بوت providers ها صدا زده میشود. providers ها روش های بت متفاوتی دارند که در با استفاده از آنها صدا زده میشود که در مقالات آتی به آنها میپردازم. مرحله چهارم: Dispatch Requestپس از راه اندازی برنامه و ثبت و راه اندازی همه Service Providers، درخواست برای ارسال به روتر تحویل داده می شود. که همان web.php یا app.php میباشد. سپس روتر درخواست را به یک مسیر یا کنترلر مدنظر ارسال می کند ، و همچنین در صورت نیاز هر middleware خاصی را برای مسیر اجرا می کند.مرحله پنجم: Routerاکنون درخواست توسط روتر به کنترلر یا مسیر موردنظر منتقل می شود و ریکوئست ارسالی مطابق روند زیر در پایان قابل مشاهده خواهدبود:روتر درخواست های HTTP را به کنترلر هدایت می کند یا با حذف کنترلر ، نمایش یا پاسخ ها را مستقیماً باز می گرداند. این مسیرها در فایل app/routes.php قرار دارند.کنترلر ها که در مسیر app/controllers/ قرار دارند، اقدامات خاصی را انجام داده و داده ها را به یک view ارسال می کند.ویوها که در مسیر app/views/ قرار دارد، قالب داده ها را بصورت مناسبی جهت پاسخ در HTTP آماده میکند و ارائه میدهد. مراحل فوق به طور واضح در نمودار زیر توضیح داده شده است. Request Life Cycle of Laravelقدم اول: یوزر ابتدا آدرس سایت موردنظر را در مرورگر خود تایپ میکند . مثلا: http://xyz.comقدم دوم: پس از وارد کردن این URL توسط کاربر و کلیک کردن، مرورگر درخواست صفحه را از طریق اینترنت به سرور وب ارسال می کند.قدم سوم: وب سرور درخواست را دریافت می کند و اطلاعات درخواست را تجزیه و تحلیل می کند. در فایل config سرور، مسیر اصلی سایت مشخص شده است. بر این اساس ، وب سرور به دنبال فایل index.php در آن مسیر است، زیرا URL شامل هیچ زیر فهرست یا مسیر دیگری نیست.قدم چهارم: سرور درخواست را به فایل index در مسیر public/index.php برنامه لاراول هدایت می کند.قدم پنجم: در این مرحله ، PHP Interpreter کدهای موجود در فایل index.php را اجرا می کند. در این مرحله ، فایلهایauto loader موجود در composer لود می شوند.قدم ششم: سپس نمونه برنامه ای از لاراول را ایجاد کرده و اجزای لاراول را بوت می کند.قدم هفتم: کرنل درخواست را دریافت می کند ، اservice providers ها را لود و به روتر هدایت می کند.قدم هشتم:روتر محتوای فایل viewراrender میکند و به سرور برمیگرداند.قدم نهم:سرور خروجی را بصورت PHP دریافت می کند و آن را از طریق اینترنت به مرورگر وب کاربر ارسال می کند.قدم دهم: مرورگر وب کاربر، response را از سرور دریافت می کند و صفحه وب را در رایانه کاربر ارائه میدهد.نتیجهبا درک چرخه عمر درخواست ها در لاراول، Request Life Cycle of Laravel ، ضمن تهیه یک برنامه ، اعتماد به نفس بیشتری خواهیم داشت. همچنین مهارت کافی برای اشکال زدایی در کد با روشی سریع تر فراهم میشود و ما می توانیم در برخی شرایط غیر منتظره به راحتی مسائل را پیگیری کنیم.