ستكون الرسالة حول أساسية في البرمجة - الكائنات العالمية. أود أن أقول إن هذه مسألة علمية أود مناقشتها. لذا ، لكي لا "يطلقوا أرجلهم" ، لا يبرمج المبرمجون في المجال العالمي. حسنًا ، كل شيء واضح وبسيط للغاية ، هل تمعن في ذلك؟ ليس في هذه الأشياء. كما تعلمون ، فإن أي إجراء يسبب سلسلة من الأحداث والعواقب المنطقية.
أولاً ، لماذا تصنع عقيدة لا يمكنك خلقها؟ بدلاً من ذلك ، دعنا ننشئ وظيفة stop_globals () ، على سبيل المثال ، للغة PHP. يمكن للإطار ، في بداية تنفيذ الكود الخاص به ، تنفيذه ، وستتسبب محاولات أخرى للعمل مع النطاق العالمي في حدوث أخطاء PHP. هل هذا الحل جيد؟
هذا أبعد ما يكون عن كل ما يمكن مناقشته.
السبب الرئيسي لوجود العقيدة المذكورة أعلاه هو أن هناك إمكانية للكتابة عن طريق الخطأ على قيم المتغيرات العالمية ، وهذا بدوره يمكن أن يؤدي إلى أخطاء محلية صعبة في البرنامج. وإذا كنت تستطيع استخدام المتغيرات العالمية للقراءة ، ولكن ليس للكتابة؟
دعونا ننتبه إلى الكون المحيط بنا. هناك أشياء عالمية فيها: المكان والزمان والمادة والطاقة وربما المادة المظلمة والطاقة. وبالمثل ، استنادًا إلى تجربتي في برمجة الويب ، هناك عدد من الكائنات التي يكون من غير المناسب لها استخدام حقن التبعية ، وهذه الكائنات عالمية بشكل أساسي. هذا هو كائن اتصال قاعدة البيانات ، وكائن المستخدم ، وغيرها. للعمل مع مثل هذه الأشياء ، في PHP ، يمكن للمرء أن يقدم وظيفة super ('sky' ، 'user') ، والتي من شأنها أن تجعل المتغيرات $ sky و $ user متغيرة للغاية ، مثل $ _GET أو $ _POST.
مثل هذا الحل ليس أسوأ من العقيدة التقليدية "من المستحيل البرمجة في المجال العالمي" ، حيث سيتم اكتشاف كتابة البيانات إلى هذه المتغيرات على الفور وستعطي PHP خطأ ، والميزة هي كما يلي:
- تبقى الكائنات العالمية من الناحية النظرية عالمية ، يبدو البرنامج أبسط
- هذا النهج أكثر إنتاجية. يعد الوصول إلى متغير بشكل أسرع بكثير من تمرير قيمته من خلال المكدس مسبقًا. وهذا يعني مكدس المعالج ، الذي يستخدمه المترجمون لتمرير معلمات الوظيفة. بطريقة أو بأخرى ، فإن تطبيق نمط DI له عبء على الموارد المستخدمة.
كما تعلمون ، فإن مشروع PHP يضع نفسه على أنه فيل ، نظرًا لأنه يوفر العديد من الأساليب للبرمجة ، وعددًا كبيرًا من الوظائف والفئات ، ووفرة من التعليمات البرمجية التجريبية التي يمكن تقييمها بمرور الوقت ويمكن تطويرها أو حذفها في المستقبل. في هذا الصدد ، أطلب من أصحاب التفكير الحر التعبير عن رأيهم المنطقي حول الأسئلة:
- هل تؤيد إدخال الوظائف التجريبية super () و stop_globals ()؟
- ما رأيك في الفكرة المذكورة أعلاه ككل؟
لا حرب مقدسة ، شكرا.
في الختام ، أود أن أشير إلى ملاحظتي بشأن Laravel ومخاطر أنماط البرمجة. كما تعلم ، تسمى Laravel
"مخزن مضادات الاكتئاب" . أعتقد أن هذه الحقيقة ، بالإضافة إلى التفكير الحر لمؤلفها ، سمحت لهذا المشروع بأن يصبح شائعًا كما هو. الأنماط جيدة للمبرمجين للتواصل ، للإشارة إلى بعض كيانات البرمجة. لكنهم يضرون ، يربك المبرمجين ، ولا يسمحون للبرامج بأن تكون فعالة. دعونا نجعل البرمجة أسهل.