هل حاول أي شخص جعل وظائف نظام PHP أكثر توجهاً للكائنات؟

StackOverflow https://stackoverflow.com/questions/61784

  •  09-06-2019
  •  | 
  •  

سؤال

أشعر بالفضول لمعرفة ما إذا كان هناك أي مشروع يحاول تجميع كل (أو معظم) وظائف PHP المضمنة في تسلسل هرمي للفئة أكثر توجهاً للكائنات.على سبيل المثال، تجميع كافة وظائف السلسلة في فئة سلسلة واحدة، وما إلى ذلك.

أدرك أن هذا لن يحل أي مشاكل في الواقع (ما لم تتم التعديلات على مستوى الكود المصدري لـ PHP)، نظرًا لأن جميع الوظائف المضمنة ستظل قابلة للوصول في مساحة الاسم العالمية، ولكنها بالتأكيد ستجعل قابلية الاستخدام أسهل بكثير.

هل كانت مفيدة؟

المحلول

للإجابة على سؤالك، نعم هناك العديد من المكتبات التي تقوم بالضبط بما تتحدث عنه.بقدر ما تريد استخدام سؤال مختلف تمامًا.تعد PHPClasses وpear.org من الأماكن الجيدة لبدء البحث عن مثل هذه المكتبات.

تحديث:كما اقترح الآخرون أن SPL هي مكتبة جيدة وتشتمل على العديد من وظائف php المضمنة.ومع ذلك، لا يزال هناك الكثير من وظائف php التي لا يلتف حولها.ويتركنا دون رصاصة فضية.

عند استخدام أطر عمل مثل Cakephp وZend (أطر أخرى أيضًا)، لاحظت أنهم يحاولون حل بعض هذه المشكلات عن طريق تضمين مكتباتهم الخاصة وبناء الأساسيات مثل اتصال قاعدة البيانات في إطار العمل.لذلك قد تكون الأطر حلاً آخر

نصائح أخرى

الطريق عدة مرات.بمجرد أن يكتشف شخص ما أن PHP يحتوي على ميزات OO، فإنه يريد تغليف كل شيء في الفصول الدراسية.

الهدف من عناصر OO في PHP هو أنه يمكنك تصميم حلولك بالطريقة التي تريدها.لكن تغليف الوظائف الموجودة في الكائنات لا يؤدي إلى الكثير من المكافآت.

ومع ذلك، فإن جوهر PHP موجه تمامًا للكائنات بالفعل.نلقي نظرة على SPL.

أعتقد أن شيئًا كهذا يعد أمرًا أساسيًا بالنسبة لـ PHP للمضي قدمًا.كوني مبرمجًا على شبكة الإنترنت بشكل رئيسي، أجد PHP أمرًا صعبًا للعمل مع مليون وواحدة من الوظائف العالمية.من الجيد أن يحتوي PHP 5.3 على مساحات أسماء، لكنه لا يساعد كثيرًا عندما لا تكون مكتباتهم موجهة نحو الكائنات، ناهيك عن توظيف مساحات الأسماء.لا أمانع PHP كلغة كثيرًا، لكن واجهة برمجة التطبيقات (API) الخاصة بها غير منظمة إلى حد كبير، وربما تحتاج إلى إصلاح شامل.يشبه إلى حد ما ما مر به VB عندما أصبح VB.Net.

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

كما أن القليل من التاريخ ضروري لفهم تسمية الوظائف الفردية في PHP.تعتمد PHP على مكتبة C القياسية ومعيار POSIX وتستخدم العديد من أسماء الوظائف نفسها (strstr، getcwd، ldap_open، إلخ).يعد هذا في الواقع أمرًا جيدًا لأنه يقلل من كمية كود ربط اللغة، ويضمن وجود مجموعة كاملة من الميزات المدروسة جيدًا (أي شيء يمكنك القيام به في لغة C يمكنك القيام به في PHP) وتم تحسين مكتبات النظام هذه بدرجة كبيرة (على سبيل المثال.عادةً ما يتم تضمين strchr مما يجعله أسرع بحوالي 10x).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top