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