اكتشف إطار PHP Laravel


الدرس: مقدّمة عامة


الصفحة السابقة
في هذا الفصل الأول سأناقش PHP وتاريخها السريع ووضعها الحالي. سأشرح أيضًا اهتمامًا باستخدام إطار عمل لهذه اللغة وخصوصًا لماذا اخترت Laravel . سأتحدث أخيرًا عن نمط MVC والبرمجة الموجهة للكائنات.

ما معنى إطار عمل؟


النهج الشخصي
PHP هي لغة شائعة ويمكن الوصول إليها. إنها سهلة التثبيت وحاضرة في جميع الأجهزة المضيفة. للمواقع .إنها لغة غنية وسهلة ، خاصة بالنسبة للشخص الذي لديه بالفعل قواعد في البرمجة. يمكننا بسرعة إنشاء تطبيق ويب وظيفي بفضل ذلك. ولكن الجانب السلبي لهذا البساطة هو أنه في كثير من الأحيان الكود ، معقد ، دون أي تماسك. يجب الاعتراف بأن PHP لا يشجع على تنظيم الكود الخاص به وليس هناك ما يلزم به.
عند إنشاء تطبيقات PHP ، ينتهي بك الأمر إلى وجود إجراءات شخصية جاهزة تمامًا للوظائف المتكررة ، على سبيل المثال لإدارة الصفحات بشكل حيوي. بمجرد إنشاء وظيفة أو فئة لأداء مهمة ما ، من الطبيعي أن تبحث عنها عندما ينشأ نفس الموقف. نظرًا لأنها مكتبة شخصية وأنت المدير الوحيد على متنها ، فمن الواضح أنه من الضروري تحديثها عند الضرورة ، وتكون أحيانًا مملة.
بشكل عام ، لدينا أيضًا تسلسل هرمي للملفات التي اعتدنا عليها ونعيد إنتاجها عندما نبدأ في تطوير تطبيق جديد. ندرك في بعض الأحيان أن هذه العادة لها آثار ضارة لأن التسلسل الهرمي الذي نضعه بشكل منتظم ليس هو الأنسب بالضرورة.
باختصار ، النهج الشخصي هو التصرّفحسب المهارات المكتسبة وتوافرها.
(إعادة) اكتشاف PHP
عندما اكتشفت لغة PHP في نهاية الألفية الأخيرة (تبدو أكثر إثارة للإعجاب في هذا القبيل )، كانت النسخة 3. كانت في الأساس لغة نصية بشكل عام مختلطة مع HTML والتي سمحت بعمل قوالب ، الوصول إلى البيانات ومعالجتها. الإصدار 4 في عام 2000 جلب المزيد من الاستقرار ومشروع البرمجة بالكائنات. لكن كان علينا الانتظار حتى الإصدار 5 في عام 2004 ليكون لدينا لغة برمجة تصل إلى المعيار الحالي للغات أخرى.
هذا التطور يشجعنا على فقدان العادات السيئة إذا كان لدينا. يقدم موقع مثل http://www.phptherightway.com أفكارًا جيدة لتنفيذ الممارسات الجيدة. لذلك إذا كنت مخترقًا لكود PHP ، فإنني أوصي بهذه القراءة الصحية التي يجب أن توفر لك رؤية جديدًة لهذه اللغة وتسمح لك بشكل خاص بالبدء بشكل صحيح في كود Laravel .
الإطــــــار
وفقًا لـ Wikipedia ، يعد إطار عمل تقنية المعلومات عبارة عن "مجموعة متماسكة من مكونات البرامج الهيكلية ، والتي يتم استخدامها لإنشاء الأسس وكذلك الخطوط العريضة لكل البرامج أو جزء منها". وبعبارة أخرى ، قاعدة متماسكة مع االقوالب الجاهزة. هناك أطر لجميع لغات البرمجة وخاصة PHP .
تتمثل فائدة إطار العمل في تجنب قضاء وقت في تطوير ما تم فعله بالفعل من قِبل آخرين أكثر كفاءة في كثير من الأحيان والذي تم استخدامه والتحقق من صحته من قبل العديد من المستخدمين. يمكننا أن نتخيل إطار عمل كمجموعة من الأدوات المتاحة. على سبيل المثال ، لا بد لي من القيام بالتوجيه لموقعي ، فأنا أتخذ مكونًا جاهزًا بالفعل والذي أثبت نفسه واستخدامه: يمكن من توفير الوقت والموثوقية والتحديث إذا لزم الأمر ...
سيكون من المخيب الاستغناء عن إطار عمل عندما يكون استخدامه فيه مزايا فقط.

لماذا LARAVEL؟ 


مكونات LARAVEL
LARAVEL ، التي أنشأها تايلور أوتويل( Taylor Otwel) ، تهيء طريقة جديدة لتصميم إطار عمل باستخدام أفضل ما هو موجود لكل ميزة. على سبيل المثال ، يحتاج أي تطبيق ويب إلى نظام يتعامل مع طلبات HTTP . بدلاً من إعادة اختراع شيء ما ، استخدم مصمم Laravel ببساطة مصمم Symfony عن طريق توسيعه لإنشاء نظام توجيه فعال. وبالمثل ، يتم إرسال رسائل البريد الإلكتروني مع مكتبة  SwiftMailer  . بطريقة ما ، أتاح Otwel سوقه من بين جميع المكتبات. سوف نرى في هذه الدورة كيف يتحقق ذلك. لكن Laravel ليس فقط إعادة تجميع المكتبات الموجودة ، بل هو أيضًا العديد من المكونات الأصلية وقبل كل شيء تزامن و تنظيم لكل هذا.
سوف تجد في Laravel :
  • نظام توجيه متقدم ( RESTFul والموارد ) ،
  • مزود استعلام SQL و ORM قوي ،
  • محرك قوالب (Templates)فعال ،
  • نظام مصادقة للاتصالات (authentification) ،
  • نظام التحقق (validation)،
  • نظام التصفّح (pagination) ،
  • نظام الترحيل لقواعد البيانات ( migration)،
  • نظام لإرسال رسائل البريد الإلكتروني ،
  • نظام ذاكرة التخزين المؤقت ،
  • نظام الحدث (event)،
  • نظام ترخيص (autorisation) ،
  • إدارة الجلسات (sessions)...
والعديد من الأشياء الأخرى التي سنكتشفها معًا. من المحتمل أن عناصر معينة من هذه القائمة لا تجعلك تفكر كثيرًا ، لكنها ليست مهمة في الوقت الحالي ، كل هذا سوف يصبح أكثر وضوحا مع مرور الفصول.
أفضل ما في PHP
الغوص في كود Laravel يعني تلقي دورة برمجة لأن الأسلوب واضح وأنيق ويتم تنظيمه بشكل رائع. الإصدار الحالي من Laravel هو 5.2 ، يتطلب على الأقل إصدار 5.5.9 من PHP . لمقاربة هذا الإطار بفعالية ، سيكون من المستحسن أن تكون على دراية بهذه المفاهيم:
  • مساحات الأسماء : هذه طريقة لتخزين الكود جيدًا لتجنب تعارض الأسماء. يستخدم Laravel هذا الاحتمال بشكل مكثف. يتم تخزين جميع المكونات في مساحات أسماء مختلفة ، و بنفس الطريقة يتم إنشاء التطبيق.
  • وظائف مجهولة : هذه وظائف غير محددة (تُسمى غالبًا عمليات الإغلاق closures) تعمل على تحسين الكود. يتم استخدامها كثيرا من طرف مستخدمي جافا سكريبت اما  مستخدمو PHP أقل قليلاً لأنها جديدة. يستخدمها Laravel أيضًا بشكل منهجي و تلقائي.
  • الأساليب السحرية : هذه هي الطرق التي لم يتم وصفها بشكل صريح في الفصل ولكن يمكن استدعاءها وحلها.
  • واجهات: الواجهة هي عقد تخطيط الفئة. في برمجة الكائنات ، يكون الجزء العلوي من التسلسل الهرمي. تستند جميع مكونات Laravel على واجهات. شهدت النسخة 5 ظهور الكثير من العقود لتوسيع الإطار بهدوء.
  • الميزات : هذه طريقة لإضافة الخصائص والأساليب إلى الفصل دون المرور بالميراث ، والذي يسمح لك بتجاوز قيود معينة من الميراث البسيط التي اقترحها PHP تلقائيا.
لا يتم وضع إطار لاستبدال المعرفة بلغة ما ولكن لمساعدة أولئك الذين يعرفون هذه اللغة جيدًا. إذا كان لديك أي ثغرات فمن الأفضل أن تملأها للاستفادة الكاملة من Laravel .
التوثيق
عندما تكون مهتمًا بإطار عمل ، فلا يكفي أن يكون غنيًا وفعالًا ، فمن الضروري أيضًا أن تكون الوثائق في المستوى . هذا هو الحال مع LARAVEL . ستجد الوثائق على الموقع الرسمي . ولكن هناك المزيد والمزيد من مصادر المعلومات ، أهمها على النحو التالي:
: المنتدى الرسمي.
  • http://laravel.sillo.org  : تم إنشاء مدونتي في أوائل عام 2013 وما زالت نشطة والتي تشكل بداية تقدمية مكملة لهذه الدورة.
  • http://cheats.jesse-obrien.ca  : صفحة عملية للغاية تلخص جميع الطلبات.
  • http://www.laravel-tricks.com  : موقع معلومات آخر.
  • http://packalyst.com  : جمع كل الحزم لإضافة وظائف إلى Laravel .
  • https://laracasts.com : العديد من دروس الفيديو باللغة الإنجليزية بما في ذلك عدد من الوصول المجاني بما في ذلك سلسلة كاملة LARAVEL 5 .
هناك أيضا كتب جيدة ولكن كلها باللغة الإنجليزية.

MVC؟ OOP؟


MVC
بالكاد يمكننا التحدث عن إطار عمل دون ذكر نموذج-عرض-التحكم (Model-View-Controller) . بالنسبة للبعض ، يعد حجر الزاوية في أي تطبيق صارم ، وبالنسبة للآخرين فهو قيد يمنع التنظيم الحكيم لكوده. بم يتعلق الأمر ؟ فيما يلي مخطط صغير لنرى بوضوح:
framework Laravel MVC
نموذج MVC
إنه نموذج لتنظيم الكود:
  • النموذج مسؤول عن إدارة البيانات
  • طريقة العرض مسؤولة عن التنسيق للمستخدم
  • وحدة التحكم هي المسؤولة عن إدارة كل ذلك
بشكل عام نلخص بالقول إن النموذج يدير قاعدة البيانات ، وطريقة العرض تنتج صفحات HTML وأن وحدة التحكم تفعل كل شيء آخر . في LARAVEL :
  • يتوافق النموذج مع جدول في قاعدة بيانات. إنه فئة تمتد من الفئة Model  التي تسمح بإدارة بسيطة وفعالة لمعالجة البيانات وتأسيس العلاقات تلقائيًا بين الجداول.
  • تنقسم وحدة التحكم إلى فئتين: وحدة التحكم الكلاسيكية والتحكم في الموارد (سأذكر بوضوح كل هذا في الدورة التدريبية).
  • طريقة العرض إما ملف بسيط بكود HTML أو ملف باستخدام نظام قالب  Blade  Laravel .
يقدم Laravel هذا النموذج لكنه لا يفرضه. سنرى أيضًا أنه من الحكمة في بعض الأحيان الابتعاد عنه نظرًا لوجود أشياء كثيرة لا يمكننا دمجها في هذا النموذج. على سبيل المثال ، إذا كان علي إرسال رسائل بريد إلكتروني أين سأضع الكود الخاص بي؟ بشكل عام ، ما يحدث هو تضخم وحدات التحكم التي تُطلب منها الأشياء التي لا تصنع من أجلها. 
OOP
Laravel هو أساسا. OOP هو نمط تصميم يتعارض بشكل جذري من البرمجة الإجرائية. مع OOP ، يتم وضع جميع الاكواد في فئات تتدفق من الواجهات التي تحدد عملها. مع OOP نتعامل مع الكائنات.
مع OOP ، تنقسم مسؤولية التشغيل إلى فئات ، في حين أن كل شيء في البرمجة الإجرائية يكون مختلطًا. توزيع المسؤولية يجنب ازدواجية الكود التي تكون أحيانا اجبارية في البرمجة الإجرائية.  Laravel يدفع الى التوزيع إلى الحد الأقصى باستخدام حقن التبعية(Dependency injection) .
استخدام فئات محددة جيدًا ، لكل منها دور محدد ، مدفوعًا بواجهات واضحة ، معززة عن طريق حقن التبعيات (Dependency injection): كل هذا يخلق كودا أنيقًا وفعالًا وقابلا للقراءة ، يسهل صيانته واختباره. هذا ما تقدمه LARAVEL . و يُمكنك إضافة الكود التقريبي الذي تريده ، ولكن يمكنك أيضًا أن تستلهم من مصادر الإطار لتحسين أسلوبك في البرمجة.
يهدف حقن التبعية (Dependency injection) إلى تجنب جعل الفئات معتمدة وتفضل ارتباطًا ديناميكيًا وليس ثابتًا. والنتيجة هي كود أكثر قابلية للقراءة يسهل صيانته واختباره. سوف نرى هذه الآلية كيف تعمل في LARAVEL .

في الخلاصة


  • إطار عمل يوفر الوقت ويمنح ضمان وجود مكونات موثوقة وموثوقة بشكل جيد.
  • Laravel هو إطار مبتكر وكامل يستخدم أحدث إمكانيات PHP ويتم ترميزه وتنظيمه بشكل جيّد جدا.
  • وثائق Laravel كاملة ودقيقة والمزيد والمزيد من الدروس والأمثلة تظهر على شبكة الإنترنت.
  • Laravel تتبنى نمط MVC ، لكنها لا تفرضه ، فهي موجهة تمامًا للكائنات.