Laravel: شرح المفاهيم الأساسية. الجزء الأول: النظرية

أصدقاء ، لدينا أخبار رائعة. في آب (أغسطس) ، أطلقنا في OTUS دورة جديدة - "Framework Laravel" ، ولكن كان هناك الكثير من الأشخاص الذين أرادوا الدراسة ولم يتمكن الجميع من الانضمام إلى المجموعة. دفق جديد يبدأ في نهاية أكتوبر! نحن ننتظر الجميع وتقليديا ، عشية بداية الدورة ، نشارك مواد مفيدة.



في هذه المقالة سوف نتعرف على الأسس النظرية لارافيل - مع الإطار نفسه وتاريخه والمفاهيم والمفاهيم الأساسية المستخدمة فيه. هذه المقالة مخصصة للمبتدئين الذين أتقنوا أساسيات PHP ، وحاولوا كتابة موقعهم الأول ، على سبيل المثال ، باستخدام نظام CMS صغير ، لكنهم لم يحاولوا بعد العمل مع أطر عمل PHP ، ولم يفهموا المزايا الرئيسية التي يقدمونها.
لذلك ، Laravel هو إطار ويب جديد نسبيًا (الإصدار الأول حدث في 2011). استغرق Laravel الأفضل من إطار خلفي آخر ، مثل Rails ، لكن الآن Laravel قد تجاوزه بالفعل من حيث الشعبية. في وقت كتابة هذا التقرير ، كان الإصدار الأخير هو 6.



ليس إطارا ، ولكن نظام بيئي بأكمله


ماذا يعني هذا؟ إذا كنت قد شاركت فقط في تطوير Frontend من قبل ، فسأقارن Laravel مع Angular: حرفيًا من سطر واحد يولد مشروعًا جديدًا لك ، ستحصل على كل شيء تقريبًا في المربع (بالطبع ، بدون الجزء الأمامي من المشروع ، ولكن سيتحول إلى 2-3 فرق أخرى وسيصبح في المكان). بقدر ما يتعلق الأمر بتطوير PHP نفسه ، لدى Laravel كل شيء تقريبًا قد ترغب في إنشاء تطبيق خلفية موثوق به: PHPUnit هو إطار للاختبار ، Artisan هي واجهة سطر أوامر لترحيل قاعدة البيانات وإنشاء النماذج وإعدادات أخرى التطبيقات ، خادم Homestead مدمج يمكنك من خلاله إنشاء بيئة افتراضية ، وكذلك العمل مع التوجيه ، ومعالجة البرامج الوسيطة ، وكذلك عرض ربط مريح مع قوالب Blade.

سنحاول تحليل جميع المفاهيم المعقدة بالترتيب. أذكركم: هذه المقالة ليست سوى مقدمة نظرية للمبتدئين. أمثلة عملية ستكون في الأجزاء التالية .

منزل

تتمثل فلسفة Laravel في منحك أقصى عدد ممكن من الأدوات المريحة من الصندوق ، وهي مريحة بشكل فريد وموثوق بها وسهلة الاستخدام. هذا هو السبب في Homestead هي واحدة من الأولى التي يتم ذكرها في الوثائق.

Laravel Homestead عبارة عن مربع Vagrant مثبت مسبقًا. ما هذا على الأرجح أن القارئ استخدم تصميمات XAMPP ، و Abyss Web Server ، أو قام بتنزيل جميع القطع اللازمة للخادم لكي يعمل (Apache ، PHP ، PHPMyAdmin ، MySQL ، وأكثر من ذلك بكثير) بشكل مستقل. يمكنك العثور على القائمة الكاملة للتثبيت داخل Homestead هنا . لماذا يتم هذا بهذه الطريقة؟ تقوم Homestead بإنشاء نوع من "البيئة الافتراضية" التي يتم تشغيلها في نفس البيئة كما هو الحال على الخادم وبنفس البرامج. تقوم Homestead بإعادة إنشاء الصناديق "الافتراضية" الخاصة بها بسرعة وسهولة ، ولا داعي للقلق لفترة طويلة إذا كسرت شيئًا عن غير قصد.

ومع ذلك ، فإن Homestead Laravel لا ينتهي عند هذا الحد. إذا كنت تستخدم نظام التشغيل Mac OS ، فأنت بحاجة إلى تجربة تطبيق Valet البسيط ، والذي لا يحتوي على الكثير من الوظائف ، ولكن من الأسهل بكثير تثبيته. وأيضًا عدد كبير من الحزم الإضافية - هذا نظام بيئي بالكامل!



ترحيل قاعدة البيانات


يبدو أن عبارة "ترحيل قاعدة البيانات" مخيفة إلى حد ما للمبتدئين. آمل أن يعرف القارئ ماهية قاعدة البيانات (من حيث المبدأ ، من الواضح ، لتخزين المعلومات) وحتى كتب في حياته شيئًا أكثر من "SELECT * FROM Customers" في أوامر SQL. ينبغي أن يكون كافيا.

لذلك ، يعد الترحيل نوعًا من نظام التحكم لنقل الجداول الخاصة بك إلى KB باستخدام مُنشئ الجدول. تتيح لك الترحيل تجنب الأخطاء والتعارضات أثناء إنشاء الجداول في قاعدة البيانات لمشروع كبير مع أعضاء فريق آخر. بالإضافة إلى ذلك ، سيتيح لك ذلك التفاعل مع قاعدة البيانات دون استخدام أدوات مثل MySQL WorkBench أو PhpMyAdmin ، ولكن مباشرةً من الكود ، اعتمادًا على احتياجات مشروعك في جداول البيانات. يتم تسجيل إضافة الجداول وإزالتها في سجل الترحيل ، والآن على الأقل سيكون للخطوط الزمنية صداع واحد أقل.





ORM


ORM هو نظام تعيين الكائنات العلائقية الذي يربط قواعد البيانات بمفاهيم البرمجة الموجهة للكائنات.

يبدو الأمر مخيفًا للوهلة الأولى ، لكن هذا يرتبط ارتباطًا مباشرًا بنقل قواعد البيانات: لكل فئة فصل خاص بها - وهو نموذج يُستخدم فقط للعمل مع هذا الجدول. هذا لا يسمح بتوليد عمل غير ضروري في قاعدة البيانات نفسها ، ولكن التفاعل معها مرة أخرى مباشرة من المشروع. نتيجة لذلك ، اتضح أنه أكثر ملاءمة وأكثر موثوقية. بالطبع ، سوف يستغرق الأمر بعض الوقت لإتقان أوامر وميزات إنشاء النماذج ، لكن الأمر سيستغرق أكثر من ذلك بكثير لإنشاء مشروع كبير مع عدد كبير من الجداول.

شفرة - القوالب: طريقة عرض مريحة للعرض


توفر قوالب Blabe فرصة لربط وجهات نظرك بطريقة مريحة. إليك ما ستبدو عليه في PHP الأصلي:

<?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/header.inc.php"); ?> <div class="catalog"> <div class="catalog-filters"> </div> <div class="catalog-products"> </div> <div class="catalog-pagination"> </div> </div> <?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/footer.inc.php"); ?> 

 <html> <head> </head> <body> @extends('header') @extends('catalog') @extends('footer') </body> </html> 

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



مساعد جيد الحرفي


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

اختبار التطبيق


إذا كنت ترغب في تطوير مشاريعك من خلال TDD / BDD (التطوير من خلال الاختبار / التطوير من خلال السلوك) فهناك PHPUnit في المجموعة (يتم دعم الاختبارات مثل المتصفح / الوحدة / الميزة) ، بالإضافة إلى حزمة لتوليد محتوى Faker مزيف (مفيد ، على سبيل المثال ، عند اختبار قاعدة البيانات ، لأنه لا يتعين عليك ملء المحتوى بنفسك ، والذي يضيفه المستخدم عادة هناك).

أشياء ممتعة كثيرة


هل تريد المصادقة عبر الشبكات الاجتماعية تظهر بسرعة في التطبيق الخاص بك؟ لا مشكلة ، لارافيل الإجتماعي يهرع لإنقاذ. تريد تكوين التخزين المؤقت؟ لا مشكلة ، الحق في الخروج من المربع. هل لديك العديد من المشاريع التي يتم استضافتها على خدمات VPS المختلفة؟ Laravel فورج في المكان. تحتاج WebSockets ، على سبيل المثال للدردشة؟ لا مشكلة وهكذا يمكن أن تستمر لفترة طويلة جدا.

لماذا يجب أن أدرس هذا Laravel؟

الآن لارافيل ، بلا شك ، يحتل منصب أهم إطار PHP. الآن ، وفقًا لـ Github ، فإن مستودعات التخزين لدى Laravel حوالي 195 ألفًا مقابل 35 ألفًا لـ Yii و 43k لـ Symfony. قد لا تكون هذه المقارنة الأكثر صدقًا ، ولكن لماذا لا نجرب Laravel إذن؟

Source: https://habr.com/ru/post/ar470794/


All Articles