لا تقل أنك لا تحب ذلك أو وجهة نظري للتعلم

مرحبا بالجميع. أود أن أقول رأيي حول التدريب على البرمجة الحديثة. سيتحدث المقال عن PHP ، وقليلًا عن الأطر والقليل عن الدراجات. لكنني أعتقد أن هذا ينطبق على أي لغة برمجة. لنبدأ.


تذكر أول كود PHP الخاص بك؟


لا ، ليس هذا واحد:


<? echo "Hello world"; //       index.php :) ?> 

وهذا واحد:


 <? include "db.php"; if ($_GET['id'] > 0){ mysql_query("SELECT * FROM `posts` WHERE id = {$_GET['id']}"); }else{ mysql_query("SELECT * FROM `posts` ORDER BY `id` DESC"); } ?> 

مع مرور الوقت ، نشأنا ، قمنا بتطوير فهم OOP (ها ها ها) وبدأنا في إنتاج شيء مشابه لهذا:


 <?php require "db.php"; if ($_GET['id'] > 0){ $db->query("SELECT * FROM `posts` WHERE id = {$_GET['id']}"); }else{ $db->query("SELECT * FROM `posts` ORDER BY `id` DESC"); } ?> 

ثم سمعنا في مكان ما أنه لا يمكن استخدام mysql_ * والجميع يستخدم mysqli_ * ، ​​لأن هذا أكثر روعة. نعيد كتابة التعليمات البرمجية الخاصة بنا لاستخدام mysqli. بعد بعض الوقت ، علمنا شركة تنمية نفط عمان.


في موازاة ذلك ، عملنا مع المتغيرات العالمية وفئات الخط المائة في كل طريقة. هل أنت على دراية بفئة المستخدم ، التي تمكنت من تسجيل مستخدم ، والتوثيق (نعم ، إذن بالطبع ، ما زلنا لا نعرف الفرق!) ، استعادة كلمة المرور؟ أنا أعلم. يمكن لفئة المستخدم الخاصة بنا تحرير أي مستخدم ، لأن لدينا طريقة رائعة لهذا:


 // PSR? ,  . class User { public function changeUserProfile($userId, array $userData){ global $db; //    $db->query("UPDATE `user` SET ...."); } public function login($userId){ } public function logout(){ //     <a href="/logout.php"></a> :) } } 

وكان لي أيضا دروس ديسيبل ، بوست والتعليق.


كنا على دراية بحقن SQL وهجمات XSS و:


  DROP TABLE `posts` 

الصلبة ، PSR ، MVC والأنماط ليست مجرد كلمات


ذهبنا بهذه الطريقة بأنفسنا ، علمنا عن SOLID ، PSR ، MVC. بالنسبة لنا ، هذه ليست مجرد كلمات ، ولكن هناك حاجة ملحة ، خاصة بعد الإرث الرهيب وأكوام الكود ، حيث يتم كتابة كل فئة من الفئات بأسلوبها الخاص. صعدنا على الآلاف من أشعل النار ، وكتبنا العديد من الدراجات ، ونتيجة لذلك ، بدأنا في كتابة كود أكثر / أقل ملائمة.


لم نعد نستخدم متغيرات عمومية وعالمية في فصولنا ، بالنسبة إلى SQL ، نستخدم الاستعلامات المعدة ولا نضع SQL في وحدات التحكم (لم يعد لدينا أيضًا UserModel :: login ()). نحن ننفذ الأشياء الضرورية باستخدام DI ، لكن لا ننشئها داخل الفصل. نحن نقود الطلب / الاستجابة ، وليس الصدى "عالم الترحيب" ونعرف سبب قيامنا بذلك. نحن نختبر كودنا ليس فقط باستخدام متصفح ، ولكن أيضًا نكتب اختبارات اصطناعية. ما هو ثمن هذا؟ لدي طفولة مع جهاز كمبيوتر ، وعشرات الليالي بلا نوم ، والعديد من fakaps وقاعدة بيانات مكسورة.


وفهمت أيضًا في وقت مبكر سبب سوء نماذج $ _POST.


لم تكن أنت هذا النوع من الشخص؟ لقد كنت.


هكذا كان من قبل. لكن ليس الآن


حتى الآن ، لا أستطيع أن أفهم ما إذا كان التعديل الجديد لدورات تطوير PHP شريرًا أم لا. من ناحية ، يتم تقديم الأشخاص في وقت قصير لمعرفة كيفية كتابة التعليمات البرمجية الخاصة بهم على الفور بشكل صحيح ، ولكن من ناحية أخرى ، لا يفهم الناس لماذا هذه هي الطريقة الصحيحة للكتابة. تُفقد طبقة كاملة من المعرفة ، وهي القاعدة التي يجب أن تتشكل بسرعة بعد ذلك.


الآن يقدمون العشرات من الدورات. في غضون ساعات قليلة ، ستتعلم كيفية الكتابة بلغة Laravel أو Yii2 أو أي إطار آخر. لا تعرف أساسيات PHP و OOP؟ PSR بالنسبة لك Prosto Sdelay Raboty؟ لا يهم ، سوف نعلمك ، مقابل 19،990 روبل فقط. يدفع الشخص ويعتقد أنه سيتعلم الكتابة على الفور. هل كتبت على الفور؟


بدأت ألاحظ أنه لسبب ما ، توقف الناس عن فهم قاعدة البيانات (العمل مع قواعد البيانات والوظائف و OOP وبدء التشغيل والتفكير والعمل مع الملفات والشبكة وما إلى ذلك) ، وانتقلوا مباشرةً إلى الأطر. إنهم لا يعرفون كيف يعمل من الداخل ، فهم يكتبون فقط على الإطار ، وليس بمساعدة. إنهم ليسوا قلقين بشأن ما يفعله الملف :: save () ، وقوة التغليف في نفسه. وهذا غير مثير للاهتمام. وإذا لم يكن هناك شيء ما في هذا الإطار ، فلا يمكن القيام بهذه الوظيفة.


لكنني لا أتفق مع هذا النهج في التعلم. ركوب الدراجات هي أفضل طريقة لفهم أي تقنية (حسنًا ، ستبدأ الآن). تحدثت بطريقة أو بأخرى عن فنجان من القهوة ، فكرت في فكرة سخيفة: إذا كنت تريد أن تفهم PHP ، فاكتب CMS الخاص بك مع الإضافات والأذونات ، تحويلة. الحقول ولوحة الادارة. ثم فكرت. أو ربما الفكرة ليست غبية على الإطلاق؟


كيف يعمل التعلم من خلال الأطر؟


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


قابلت عدة أشخاص قالوا إنهم يكتبون على أطر. لكن في نفس الوقت لا يعرفون الأساسيات. أخبرني شخص ، بكل جدية ، أنه لا يعرف وظيفة array_map.


حسنًا ، ما الذي ستمنحه دراجتنا؟


على الأقل سنتعرف على التحميل التلقائي للملفات والفئات. نحن نعلم أنه يمكن القيام بذلك باستخدام الملحن ، بدلاً من كتابة spl_autoload_ ... سنتعلم كيفية إنشاء اتصالات قاعدة البيانات ، باستخدام الانعكاس ، سوف نتعلم كيفية إنشاء نظام المكوّن الإضافي الخاص بنا وفهم سبب سوء استخدام \ $ _ GET و \ $ _ POST في منطق العمل. سنذهب طوال الطريق من طلب إلى استجابة. الأطر تسير بهذه الطريقة بالنسبة لنا.


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


بعد أن تخطّيت جميع أنواع المكابس ، سوف نفهم على مستوى عميق سبب استخدام نُهج وأنماط التصميم هذه أو تلك ، لا سيما عندما تحتاج إلى توسيع التعليمات البرمجية والحفاظ عليها واختبارها.


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


بعد كل شيء ، كيف للدراسة؟ هل بدأت على الفور كتابة العمل ورمز دقيق دون أخطاء؟ لم أفعل ، لقد كتبت الآلاف من سطور الكود قبل أن أدرك ما كان يحدث. على الرغم من أنني ربما لم أفهم ، لكن هل يبدو لي كل شيء؟


لكن من الأفضل أن تكتب دراجتك في المنزل ، وأن تفهم التكنولوجيا ، وأن تفهم ما هو ، وربما حتى تجد حلاً جاهزًا على العبوة ، بدلاً من كتابة دراجتك على الإنتاج.


مقالة من mail.ru قريبة مني: PHP الحديثة بدون أطر ، حيث أراد المؤلف أن يعرض الجهاز بكل الأطر وما هي عليه بالفعل.


في الآونة الأخيرة ، أصبح الكثير من الشفرة القديمة من 2000s في حياتي. المشروع قديم ولكنه مثير للاهتمام وهو ما يحتاج أيضًا إلى نقله إلى سكك حديدية جديدة (إذا كان ذلك مثيرًا للاهتمام ، فسوف أخبره بالتأكيد). يبدو نفس الكود في بداية المقال: التخطيط ، SQL والمنطق في ملف واحد. ولكن لدي لقطة قديمة. أنا أعرف كيفية العمل معه وكيفية رد الفعل عليه. ولكن ماذا سيفعل الشخص الذي يمكنه الكتابة فقط على الأطر؟


انه فقط لن تواجه مثل هذا المشروع :)

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


All Articles