هل تستخدم البرمجة الكائنية في PHP

  • phpg

أستخدم PHP منذ فترة طويلة ورغم أنني حاولت أن أبني برامج بأسلوب الكائنات والعناصر إلا أنني وجدت نفسي أعود دائماً إلى الأسلوب القديم (Structural Programming) لأنني لم أجد فائدة ملموسة لهذا الأسلوب، الكثير يردد أمور مثل الوراثة وغيرها من الفوائد ولكن هي مشابهة لعملية include بشكل أو بأخر.

لعل أكون مخطئاً وربما طريقة تخطيطي خاطئة؟ ماذا عنكم.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

20

أستخدمها الى حد ما.

الأمر يحتاج الى تعود فقط، بالإضافة الى احتكاكك مع أطر العمل Framework سيفرض عليك التعامل مع الـ OOP ، ايضا ً تواصلك مع مجتمع المطورين حول العالم في بعض المواقع التي تعتمد على مشاركة الكود المصدري Source Code سيجبرك على استخدامها.

بمجرد ان تتعود عليها ستجد نفسك انك تستخدمها غالبا ًوستجد ان الكود اصبح اسهل في التنظيم والقراءة، والبرمجة ستصبح أسهل بكثير عن الاسلوب السابق.

فائدة الـ OOP تكمن أولا ً في تنظيم الكود، وهذه الفائدة تظهر كلما زادت الاسطر البرمجية، اضف الى ذلك ان مرحلة البرمجة تسبقها مرحلة التحليل واعتقد ان تجزئة البرنامج الى كينونات صغيرة يسهل عملية التحليل ويسهل توثيقة بالشكل المناسب بعكس ان يكون برنامجك عبارة عن Functions مبعثرة في كل مكان في هذه الحالة ربما ستطر لشرح كل دالة، وهنا تظهر اهمية الـ encapsulation في الـ OOP بحيث تفرز جميع الدوال داخل كلاس واحد و مسمى واحد، مثلا دوال التعامل مع المستخدم كلها تضعها في كلاس مثلا باسم user وبالتالي اذا احتجت في اي لحظة ان تضيف امر تابع للمستخدم ستعرف الى اي تتجه واين ستجد الدالة المناسبة.

ايضا ً اهمية الـ OOP تبرز بشكل واضح اذا كنت تعمل مع فريق برمجي بحيث تمكنك من تجزئة البرنامج الى عدة كائنات وكل مبرمج يهتم بجزء معين ثم يتم تجميع كل هذه الكائنات.

اذا عودت نفسك على استخدام OOP ستفهم فائدتها الحقيقية.

السلام عليكم

أنا أيضاً ظللت فترة طويلة جداً أعمل بطريقة Structural Programming وقد بدأت منذ مدة قريبة بالبرمجة بواسطة الاوبجكت اورينتد لما قرأته عنها وعن مدى ما توفره من مجهود على المبرمج.. وقد كنت أعرف جيداً أنها توفر مجهود كبير .. ولكن ما اكتشفته كان مفاجأة مدهشة بكل المقاييس.. لقد برمجت موقع عبارة عن مقالات وفيديو والبومات صور وصفحات داخلية واتصل بنا.. كل هذا في أقل من ساعتين لأنني كنت استخدمت هذه الأقسام قبل هذا في موقع كنت برمجته بالاوبجكت اورينتد ونقلتها إلى موقعي الجديد.. لن تتخيل مدى السرعة في العمل.. أنا اندهشت فعلاً لانني لم أعرف أنها توفر الوقت والمجهود بهذه السرعة.. وهذه أول المفاجأت وما زلت أنتظر المفاجأت من الاوبجكت اورينتد.. وأنا مازلت مبتدأ في الاوبجكت اورينتد فما بالك بالمتمرسين بها

لا أستطيع التخطيط لمشروع برمجي بدون التفكير بمنهجية OOP.

وحقيقة ليس الأمر فقط ب Classes VS Procedures إن صح التعبير، يجب التفكير بالمشروع من ناحية الوراثة و الواجهات ، الأمر قد يتطلب بعض الجهد لكن هذا سيمكنك من توثيق المشروع وصيانته والتطوير عليه مستقبلاً.

بإمكانك أيضاً العمل بفكر Procedural Programming أو البرمجة الإجرائية ، أيضاً هذا الأسلوب له معايير يجب اتباعها ، ولا يعني أبداً أنه عشوائي كما يساء فهمه عادةً.

استخدام إطار عمل حديث مثل Zend أو Yii يجعل OOP أمر مفروغ منه وهو الخيار الأنسب.

بالتأكيد! ولكن مع HTML وليس PHP :)

خبرتي محصورة في تقنيات الطرف الزبون HTML5/CSS3/jQuery، ومع ذلك لا أتوقف عن التفكير بالعمل البرمجي بمنطق الـ object-oriented. وقد حاولت هنا تمثيل بنية HTML5 وبنية مكتبة RichStyle تحديداً ككائنات وفئات:

خصائص أسلوب OOP, لا يمكن الإستغناء عنها, مع العلم أيضاً ان أسلوب البرمجة الوظيفية (Functional Programming) مهم جداً وله إستخداماته, ولكن تكمن قوة أسلوب البرمجة الكائنية المتجهة (Object Oriented Programming), أو OOP فى 4 خصائص يمكن إختصار تعريفهم فى :

  1. التجرد أو (Abstraction), لتحديد الخصائص الرئيسية, والأولية لكائن برمجى أو أكثر.

  2. التوريث أو (Inheritance), بمعنى قابلية توريث صفات ووظائف كلاس معين, لـ كلاس آخر فرعى.

  3. تعدد الأشكال أو (Polymorphism), بمعنى انه من الممكن جمع مجموعة خصائص مشتركة لأكثر من كلاس (Classes) فى كلاس واحد, لإستخدامه فى كلاسات فرعية, بشكل متعدد, لتنفيذ وظائف متنوعة.

  4. التغليف أو (Encapsulation), هو إمكانية إدراج كلاس بكامل وظائفه وخصائصه, فى صورة جزء, او خاصية, فى كلاس آخر.