درخواست چرخه حیات
معرفی
هنگام استفاده از هر ابزاری در "دنیای واقعی"، اگر درک کنید که آن ابزار چگونه کار می کند، اعتماد به نفس بیشتری پیدا می کنید. توسعه برنامه نیز تفاوتی ندارد. وقتی نحوه عملکرد ابزارهای توسعه خود را درک می کنید، احساس راحتی و اطمینان بیشتری در استفاده از آنها خواهید داشت.
هدف این سند ارائه یک نمای کلی خوب و سطح بالا از نحوه کار چارچوب لاراول است. با شناخت بهتر چارچوب کلی، همه چیز کمتر «جادویی» به نظر میرسد و در ساخت برنامههای خود مطمئنتر خواهید بود. اگر بلافاصله همه اصطلاحات را متوجه نشدید، دلتان را از دست ندهید! فقط سعی کنید درک اولیه ای از آنچه در حال وقوع است به دست آورید، و دانش شما با کاوش در بخش های دیگر اسناد افزایش می یابد.
مروری بر چرخه حیات
مراحل اول
نقطه ورود همه درخواست ها به برنامه لاراول فایل است
public/index.php
. تمام درخواست ها توسط پیکربندی وب سرور شما (Apache / Nginx) به این فایل هدایت می شوند. فایل
index.php
حاوی کد زیادی نیست. بلکه نقطه شروعی برای بارگذاری بقیه چارچوب است.
این
index.php
فایل تعریف بارگذاری خودکار تولید شده توسط Composer را بارگیری می کند و سپس نمونه ای از برنامه لاراول را از
bootstrap/app.php
. اولین اقدامی که خود لاراول انجام می دهد، ایجاد یک نمونه از
کانتینر برنامه/سرویس
است .
هسته های HTTP / کنسول
در مرحله بعد، بسته به نوع درخواستی که وارد برنامه میشود، درخواست ورودی به هسته HTTP یا هسته کنسول با استفاده از روشهای نمونه برنامه ارسال
handleRequest
میشود
handleCommand
. این دو هسته به عنوان مکان مرکزی عمل می کنند که تمام درخواست ها از طریق آن جریان می یابند. در حال حاضر، اجازه دهید فقط بر روی هسته HTTP تمرکز کنیم، که نمونه ای از
Illuminate\Foundation\Http\Kernel
.
هسته HTTP آرایه ای از
bootstrappers
آن را تعریف می کند که قبل از اجرای درخواست اجرا می شود. این بوت استرپرها مدیریت خطا را پیکربندی میکنند، گزارشگیری را پیکربندی میکنند،
محیط برنامه را شناسایی میکنند
و کارهای دیگری را که باید قبل از رسیدگی واقعی به درخواست انجام شوند، انجام میدهند. به طور معمول، این کلاس ها پیکربندی داخلی لاراول را انجام می دهند که نیازی به نگرانی در مورد آن ندارید.
هسته HTTP همچنین مسئول ارسال درخواست از طریق پشته میان افزار برنامه است. این میان افزارها خواندن و نوشتن جلسه HTTP را انجام می دهند ، تعیین می کنند که آیا برنامه در حالت تعمیر و نگهداری است یا خیر، تأیید توکن CSRF و موارد دیگر. به زودی در مورد این موارد بیشتر صحبت خواهیم کرد.
امضای متد برای
handle
متد هسته HTTP بسیار ساده است: a را دریافت می کند
Request
و a را برمی گرداند
Response
. به کرنل به عنوان یک جعبه سیاه بزرگ فکر کنید که کل برنامه شما را نشان می دهد. به آن درخواست های HTTP بدهید و پاسخ های HTTP را برمی گرداند.
ارائه دهندگان خدمات
یکی از مهمترین اقدامات بوت استرپ هسته، بارگذاری ارائه دهندگان خدمات برای برنامه شما است. ارائه دهندگان خدمات مسئول بوت استرپ تمام اجزای مختلف فریمورک مانند پایگاه داده، صف، اعتبارسنجی و اجزای مسیریابی هستند.
لاراول از طریق این لیست از ارائه دهندگان تکرار می کند و هر یک از آنها را نمونه سازی می کند. پس از نمونه سازی ارائه دهندگان،
register
متد در همه ارائه دهندگان فراخوانی می شود. سپس، پس از ثبت نام همه ارائه دهندگان،
boot
متد در هر ارائه دهنده فراخوانی می شود. به این دلیل است که ارائه دهندگان خدمات ممکن است به هر اتصال کانتینری که تا زمان
boot
اجرای روش آنها ثبت شده و در دسترس است، وابسته باشند.
اساساً هر ویژگی اصلی ارائه شده توسط لاراول بوت استرپ شده و توسط یک ارائه دهنده خدمات پیکربندی شده است. از آنجایی که بسیاری از ویژگی های ارائه شده توسط این فریم ورک را بوت استرپ و پیکربندی می کنند، ارائه دهندگان خدمات مهم ترین جنبه کل فرآیند بوت استرپ لاراول هستند.
در حالی که چارچوب به صورت داخلی از دهها ارائهدهنده خدمات استفاده میکند، شما همچنین میتوانید خود را ایجاد کنید. می توانید لیستی از ارائه دهندگان خدمات تعریف شده توسط کاربر یا شخص ثالثی که برنامه شما از آنها استفاده می کند را در فایل بیابید
bootstrap/providers.php
.
مسیریابی
هنگامی که برنامه بوت استرپ شد و همه ارائه دهندگان خدمات ثبت شدند،
Request
برای ارسال به روتر تحویل داده می شود. روتر درخواست را به یک مسیر یا کنترلر ارسال می کند و همچنین هر میان افزار خاص مسیر را اجرا می کند.
میانافزار مکانیزمی مناسب برای فیلتر کردن یا بررسی درخواستهای HTTP که وارد برنامه شما میشوند فراهم میکند. به عنوان مثال، لاراول شامل یک میان افزار است که تأیید می کند آیا کاربر برنامه شما احراز هویت شده است یا خیر. اگر کاربر احراز هویت نشود، میان افزار کاربر را به صفحه ورود هدایت می کند. با این حال، اگر کاربر احراز هویت شود، میانافزار به درخواست اجازه میدهد تا در برنامه ادامه یابد. برخی از میانافزارها به همه مسیرهای داخل برنامه اختصاص داده میشوند، در
PreventRequestsDuringMaintenance
حالی که برخی فقط به مسیرها یا گروههای مسیری خاص اختصاص داده میشوند. می توانید با مطالعه
مستندات میان افزار
کامل اطلاعات بیشتری در مورد میان افزار کسب کنید .
اگر درخواست از تمام میانافزار اختصاصدادهشده مسیر منطبق عبور کند، روش مسیر یا کنترلکننده اجرا میشود و پاسخی که با روش مسیر یا کنترلکننده برگردانده میشود، از طریق زنجیره میانافزار مسیر بازگردانده میشود.
در حال اتمام
هنگامی که روش مسیر یا کنترلر پاسخی را برمی گرداند، پاسخ از طریق میان افزار مسیر به سمت بیرون حرکت می کند و به برنامه فرصتی می دهد تا پاسخ خروجی را اصلاح یا بررسی کند.
در نهایت، هنگامی که پاسخ از طریق میانافزار برمیگردد،
handle
متد هسته HTTP، شی پاسخ را به
handleRequest
نمونه برنامه برمیگرداند و این متد
send
متد را روی پاسخ برگشتی فراخوانی میکند. این
send
روش محتوای پاسخ را به مرورگر وب کاربر ارسال می کند. ما اکنون سفر خود را در کل چرخه عمر درخواست لاراول کامل کرده ایم!
تمرکز بر ارائه دهندگان خدمات
ارائه دهندگان خدمات واقعاً کلید راه اندازی یک برنامه لاراول هستند. نمونه برنامه ایجاد می شود، ارائه دهندگان خدمات ثبت می شوند و درخواست به برنامه بوت استرپ داده می شود. واقعاً به همین سادگی است!
داشتن درک دقیق از نحوه ساخت و راه اندازی برنامه لاراول از طریق ارائه دهندگان خدمات بسیار ارزشمند است. ارائه دهندگان خدمات تعریف شده توسط کاربر برنامه شما در
app/Providers
دایرکتوری ذخیره می شوند.
به طور پیش فرض،
AppServiceProvider
نسبتا خالی است. این ارائه دهنده مکانی عالی برای افزودن اتصالات بوت استرپینگ و سرویس کانتینر برنامه شما است. برای برنامههای بزرگ، ممکن است بخواهید چندین ارائهدهنده خدمات ایجاد کنید، که هر کدام دارای راهاندازی دانهای بیشتر برای سرویسهای خاص مورد استفاده برنامه شما هستند.