الفرق بين المراجعتين لصفحة: «Laravel/lifecycle»

من موسوعة حسوب
لا ملخص تعديل
 
(6 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
  <noinclude>{{DISPLAYTITLE:دورة حياة الطلب في Laravel}}</noinclude>
  <noinclude>{{DISPLAYTITLE:دورة حياة الطلب (Request Lifecycle) في Laravel}}</noinclude>
== مقدمة ==
== مقدمة ==
عندما تفهم كيفية عمل أدوات تطويرك تزداد راحتك وثقتك عند استخدامها. تطوير التطبيقات لا يشذ عن هذه القاعدة.
عندما تفهم كيفية عمل أدوات تطويرك تزداد راحتك وثقتك عند استخدامها. تطوير التطبيقات لا يشذ عن هذه القاعدة.
سطر 7: سطر 7:
== نظرة عامة عن دورة الحياة ==
== نظرة عامة عن دورة الحياة ==


==== أول شيء ====
=== أول شيء ===
نقطة الدخول لكل طلبات تطبيقات [[Laravel]] هو الملف <code>public/index.php</code>. تُوجَّه اعدادات خادم الويب (Apache أو Nginx) كل الطلبات نحو هذا الملف. لا يحتوي الملف <code>index.php</code> على كثيرٍ من التعليمات البرمجية؛ إلا أنَّه نقطة بداية لبقية إطار العمل.
نقطة الدخول لكل طلبات تطبيقات [[Laravel]] هو الملف <code>public/index.php</code>. تُوجَّه اعدادات خادم الويب (Apache أو Nginx) كل الطلبات نحو هذا الملف. لا يحتوي الملف <code>index.php</code> على كثيرٍ من التعليمات البرمجية؛ إلا أنَّه نقطة بداية لبقية إطار العمل.


يُحمِّل الملف <code>index.php</code> تعريف التحميل التلقائي autoloader الذي يُولِّده Composer، ثم يعقبه بجلب نسخ من تطبيق [[Laravel]] من سكريبت <code>bootstrap/app.php</code>. أول فعل يقوم به Laravel نفسه هو إنشاء نسخة من التطبيق / [[Laravel/container|حاوي الخدمات]] (service container).
يُحمِّل الملف <code>index.php</code> تعريف التحميل التلقائي autoloader الذي يُولِّده Composer، ثم يعقبه بجلب نسخ من تطبيق [[Laravel]] من سكريبت <code>bootstrap/app.php</code>. أول فعل يقوم به Laravel نفسه هو إنشاء نسخة من التطبيق / [[Laravel/container|حاوي الخدمات]] (service container).


==== نُوىHTTP / الطرفية (HTTP / Console Kernels) ====
=== نُوىHTTP / الطرفية (HTTP / Console Kernels) ===
بعدها يرسل الطلب القادم إما لنواة HTTP أو لنواة الطرفية حسب نوع الطلب الذي يدخل التطبيق. تعمل النواتان كموقع مركزي تمر عبره كل الطلبات. حاليا فلنركز فقط على نواة HTTP  الموجودة في <code>app/Http/Kernel.php</code>.
بعدها يرسل الطلب القادم إما لنواة HTTP أو لنواة الطرفية حسب نوع الطلب الذي يدخل التطبيق. تعمل النواتان كموقع مركزي تمر عبره كل الطلبات. حاليا فلنركز فقط على نواة HTTP  الموجودة في <code>app/Http/Kernel.php</code>.
تشتق نواة HTTP الصنف <code>Illuminate\Foundation\Http\Kernel</code>، الذي يُعرِّف مصفوفة من العمليات التمهيدية (bootstrappers)  تُشَغَّل قبل تنفيذ الطلب، والتب ستُعِّد عمليات معالجة الأخطاء، وسجل الولوج، رصد بيئة التطبيق والقيام مهمات أخرى يتوجب اتمامها قبل الشروع في معالجة الطلب.
تشتق نواة HTTP الصنف <code>Illuminate\Foundation\Http\Kernel</code>، الذي يُعرِّف مصفوفة من العمليات التمهيدية (bootstrappers)  تُشَغَّل قبل تنفيذ الطلب، والتب ستُعِّد عمليات معالجة الأخطاء، وسجل الولوج، رصد بيئة التطبيق والقيام مهمات أخرى يتوجب إتمامها قبل الشروع في معالجة الطلب.


تُعرِّف نواة الHTTP أيضًا قائمة من البرمجيات الوسيطة (middleware) التي تستلزم مرور كل الطلبات عبرها قبل أن يعالجها التطبيق. تتولى هذه البرمجيات الوسيطة كتابة وقراءة جلسات HTTP sessions) HTTP، وتقرير إن كان التطبيق في نمط الصيانة (maintenance mode)، والتحقق من رمز CSRF، والمزيد.
تُعرِّف نواة الHTTP أيضًا قائمة من [[Laravel/middleware|البرمجيات الوسيطة]] (middleware) التي تستلزم مرور كل الطلبات عبرها قبل أن يعالجها التطبيق. تتولى هذه البرمجيات الوسيطة كتابة وقراءة جلسات HTTP sessions) HTTP، وتقرير إن كان التطبيق في نمط الصيانة (maintenance mode)، والتحقق من رمز CSRF، والمزيد.
توقيع الدالة لدالة نواة handle HTTP بسيط جدًا: إذ تتلقى طلبًا Request  وتعيد ردًا Response. تخيل النواة كصندوق أسود كبير يمثل كامل تطبيقك. تمده بطلبات HTTP وسيعيد لك إجابات HTTP.
توقيع الدالة لدالة نواة handle HTTP بسيط جدًا: إذ تتلقى طلبًا Request  وتعيد ردًا Response. تخيل النواة كصندوق أسود كبير يمثل كامل تطبيقك. تمده بطلبات HTTP وسيعيد لك إجابات HTTP.


سطر 28: سطر 28:


== التركيز على مقدمي الخدمات ==
== التركيز على مقدمي الخدمات ==
مقدمو الخدمات هن فعلًا مفتاح تمهيد التطبيق Laravel.أولا تُنشَئ نسخة من التطبيق، تُسَجَّل مقدمو الخدمات، وأخيرا  يُسَلَّم الطلب للتطبيق المُمَهَّد. الموضوع بسيط جدا!
مقدمو الخدمات هن فعلًا مفتاح تمهيد التطبيق [[Laravel]].أولا تُنشَئ نسخة من التطبيق، تُسَجَّل مقدمو الخدمات، وأخيرا  يُسَلَّم الطلب للتطبيق المُمَهَّد. الموضوع بسيط جدا!
امتلاك فهم راسخ لكيفية بناء وتشغيل [[Laravel]] عبر مقدمي الخدمات قيم جدًا. مقدمو الخدمات مخزَّنات افتراضيًا في المجلَّد app/Providers.
امتلاك فهم راسخ لكيفية بناء وتشغيل [[Laravel]] عبر مقدمي الخدمات قيم جدًا. مقدمو الخدمات مخزَّنات افتراضيًا في المجلَّد <code>app/Providers</code>.


مبدئيًا، المقدم AppServiceProvider فارغ إلى حد ما. يمثل هذا المقدم مكانًا ممتازًا لإضافة ارتباطات (bindings) عملية التمهيد (bootstrapping) و حاويات خدمات تطبيقك. للتطبيقات الضخمة قد ترغب في إنشاء عِدَّة مقدمي خدمات، كل واحدة بمستوى أكثر بساطة من التمهيد.  
مبدئيًا، المقدم <code>AppServiceProvider</code> فارغ إلى حد ما. يمثل هذا المقدم مكانًا ممتازًا لإضافة ارتباطات (bindings) عملية التمهيد (bootstrapping) و حاويات خدمات تطبيقك. للتطبيقات الضخمة قد ترغب في إنشاء عِدَّة مقدمي خدمات، كل واحدة بمستوى أكثر بساطة من التمهيد.  


== مصادر ==
== مصادر ==
* [https://laravel.com/docs/5.6/lifecycle صفحة Request Lifecycle في توثيق Laravel الرسمي]
* [https://laravel.com/docs/5.6/lifecycle صفحة Request Lifecycle في توثيق Laravel الرسمي.]
[[تصنيف:Laravel|{{SUBPAGENAME}}]]
[[تصنيف:Laravel Architecture Concepts|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 14:16، 24 أكتوبر 2018

مقدمة

عندما تفهم كيفية عمل أدوات تطويرك تزداد راحتك وثقتك عند استخدامها. تطوير التطبيقات لا يشذ عن هذه القاعدة.

الهدف من هذه الصفحة هو منحك نظرة عامة جيدة وعالية المستوى عن كيفية عمل إطار عمل Laravel. يزول الإحساس "السحري" عن كل شيء عندما تبدأ بتحسين فهمك لمنصة العمل بشكل عام. لا تيأس إن لم تفهم كل المصطلحات على الفور! حاول فقط تكوين فكرة عامة عما يحدث ومعرفتك ستزداد كلما اكتشفت أجزاء جديدة من هذا التوثيق.

نظرة عامة عن دورة الحياة

أول شيء

نقطة الدخول لكل طلبات تطبيقات Laravel هو الملف public/index.php. تُوجَّه اعدادات خادم الويب (Apache أو Nginx) كل الطلبات نحو هذا الملف. لا يحتوي الملف index.php على كثيرٍ من التعليمات البرمجية؛ إلا أنَّه نقطة بداية لبقية إطار العمل.

يُحمِّل الملف index.php تعريف التحميل التلقائي autoloader الذي يُولِّده Composer، ثم يعقبه بجلب نسخ من تطبيق Laravel من سكريبت bootstrap/app.php. أول فعل يقوم به Laravel نفسه هو إنشاء نسخة من التطبيق / حاوي الخدمات (service container).

نُوىHTTP / الطرفية (HTTP / Console Kernels)

بعدها يرسل الطلب القادم إما لنواة HTTP أو لنواة الطرفية حسب نوع الطلب الذي يدخل التطبيق. تعمل النواتان كموقع مركزي تمر عبره كل الطلبات. حاليا فلنركز فقط على نواة HTTP  الموجودة في app/Http/Kernel.php. تشتق نواة HTTP الصنف Illuminate\Foundation\Http\Kernel، الذي يُعرِّف مصفوفة من العمليات التمهيدية (bootstrappers)  تُشَغَّل قبل تنفيذ الطلب، والتب ستُعِّد عمليات معالجة الأخطاء، وسجل الولوج، رصد بيئة التطبيق والقيام مهمات أخرى يتوجب إتمامها قبل الشروع في معالجة الطلب.

تُعرِّف نواة الHTTP أيضًا قائمة من البرمجيات الوسيطة (middleware) التي تستلزم مرور كل الطلبات عبرها قبل أن يعالجها التطبيق. تتولى هذه البرمجيات الوسيطة كتابة وقراءة جلسات HTTP sessions) HTTP، وتقرير إن كان التطبيق في نمط الصيانة (maintenance mode)، والتحقق من رمز CSRF، والمزيد. توقيع الدالة لدالة نواة handle HTTP بسيط جدًا: إذ تتلقى طلبًا Request  وتعيد ردًا Response. تخيل النواة كصندوق أسود كبير يمثل كامل تطبيقك. تمده بطلبات HTTP وسيعيد لك إجابات HTTP.

مقدمو الخدمات

تحميل مقدمي الخدمات من أجلك هي من أهم أفعال عمليات النواة التمهيدية لتطبيقك. كل مقدمي الخدمات لتطبيقك مُعدُّات في ملف الإعدادات config/app.php وتحديدًا في مصفوفة providers. بداية، ستُنادى الدالة register على كل مقدمي الخدمات، بعدها عندما يُسَجَّل كل المقدمين ستُنادى الدالة boot.

مقدمو الخدمات مسؤولون عن تمهيد كل مكونات إطار العمل مثل قاعدة البيانات، والطابور، والتحقق (validation)، ومكونات التوجيه. مقدمو الخدمات أهم جانب من عملية التمهيد في Laravel كاملة بما أنهن يشغلن ويعددن كل خاصية يوفرها إطار العمل.

إرسال الطلب (Dispatch Request)

لحظة إنهاء تمهيد التطبيق و تسجيل كل مقدمي الخدمات، يُسَلَّم Request لجهاز التوجيه (router) للإرسال. يرسل جهاز التوجيه الطلب لمسار (route) أو وحدة تحكم (controller) كما يُشَغِّل أي برمجيات وسيطة خاصة بالمسار.

التركيز على مقدمي الخدمات

مقدمو الخدمات هن فعلًا مفتاح تمهيد التطبيق Laravel.أولا تُنشَئ نسخة من التطبيق، تُسَجَّل مقدمو الخدمات، وأخيرا  يُسَلَّم الطلب للتطبيق المُمَهَّد. الموضوع بسيط جدا! امتلاك فهم راسخ لكيفية بناء وتشغيل Laravel عبر مقدمي الخدمات قيم جدًا. مقدمو الخدمات مخزَّنات افتراضيًا في المجلَّد app/Providers.

مبدئيًا، المقدم AppServiceProvider فارغ إلى حد ما. يمثل هذا المقدم مكانًا ممتازًا لإضافة ارتباطات (bindings) عملية التمهيد (bootstrapping) و حاويات خدمات تطبيقك. للتطبيقات الضخمة قد ترغب في إنشاء عِدَّة مقدمي خدمات، كل واحدة بمستوى أكثر بساطة من التمهيد.  

مصادر