الميزات الجديدة للبرمجة غرضية التوجه المدعومة في الإصدار php5 الحلقة الأولى

السلام عليكم ورحمة الله وبركاته

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

لن أطيل عليكم بالمقدمة وإليكم التفاصيل

مقدمة :

فقط مع الوقت سوف تدرك بأن php5  أفضل بكثير من الإصدارات السابقة لها.

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

تغطي هذه المقالة كل من php5  والميزات الجديدة المدرجة فيها بشكل مسهب وموسع, بالنسبة لأولئك الأشخاص المعتادين على الإصدار السابق php4  , ومتشوقون لمعرفة الجديد في php5 فإن هذا الجزء مخصصاً لهم.

سوف يغطي هذا الجزء كل من ا لنقاط التالية:

  • الميزات الجديدة المدرجة في اللغة
  • التمديدات المهمة المضافة إلى php – new concerning php extensions
  • بعض التغيرات الطفيفة التي تم إجرائها في الإصدار الجديد ولم تكن موجودة في الإصدار القديم.

ميزات اللغة

النموذج غرضي التوجه new object oriented model

لقد تم فعليا من الإصدارات السابقة وتحديداً من php3 إضافة مفاهيم البرمجة غرضية التوجه إلى اللغة لكنها لم تكن مدعومة بشكل جيد .

وبالرغم من أن النموذج غرضي التوجه في ذلك الوقت كان يملك كثير من المحدوديات , إلا أنه قد تم استخدامه بشكل واسع وعلى نطاق واسع في العالم.

إن هذا الاستخدام الواسع النطاق  للبرمجة غرضية التوجه الموجودة في php4  بالرغم من ضعفها جعلها من أهم النقاط التي وجب التركيز عليها في الإصدار الحديث من php  أي في  php5.

من أهم نقاط الضغف التي كانت موجودة في النموذج القديم غرضي التوجه تكمن فيمايلي :

عندما نشير إلى غرض ما كانت علمية نسخ كاملة لهذا الغرض تتم في الخلف , مما يؤدي بشكل أو بآخر إلى إضعاف الأداء بالإضافة إلى حدوث عدد من الأخطاء الخفية التي كانت تتم في التطبيق, لأن بهذا السلوك فإن عدد من المطورين يعتقدون بأنهم يشيرون إلى نفس الغرض , لكن فعليا على أرض الواقع ليست هذه هي الحالة. لأنهم فعليا يشيرون إلى عدة نسخ من نفس الغرض, وتغيير أحداها لن يغير الأخرى.

على سبيل المثال :

في الإصدار الرابع من php  ستكون النتيجة Andi . وذلك لأننا قد مررنا الغرض بالقيمة وليس بالمرجع ( عبر التابع changeName() ) , ولذلك فعليا سيتم نسخ نسخة مستقلة من ا لغرض والعمل عليها , وبالتالي فإن تأثير ا لتابع سيكون محصور فقط على نسخة من الغرض $person.

حيث أن السلوك المتبع فعليا في اللغة ليس سلوكاً بديهياً مثلما يتوقع أغلب المبرمجين الذين يتبعون أسلوب البرمجة غرضية التوجه – مثل مبرمجي جافا- حيث أنه في جافا يتم فعليا رصد مرجع – مؤشر – إلى ذلك الغرض , ولذلك فعندما يتم نسخه فإن المؤشر فقط هو الذي سيتم نسخه.

هنالك عدد من مستخدمي لغة البرمجة php 4  الذين كانوا مدركين لواقع هذه المشكلة ومتنبهين لها , ولكن كان في المقابل عدد اخر من المبرمجين غير منتبهين لهذه المشكلة  فتسببت لهم بالكثير من الارهاق وهم يحاولون البحث عن الأخطاء في زمازهم تلك الاخطاء التي لم يكونوا يعرفون مصدرها , وفي الواقع مصدرها كان تلك الثغرة في php 4

أما في php 5  فقد تمت عملية إعادة كتابة البنية التحتية للنموذج الغرضي ليتعامل مع مقابض الأغراض object handles  . أي اصبحنا نتعامل مع الأغراض باستخدام مؤشرات تشير اليها دون الحاجة إلى نسخ الغرض بشكل كامل من أجل العمل عليه , باستثناء الحالة التي نقوم بها بصراحة باستخدام الكلمة المفتاحية clone  التي نحصل بنتيجتها وباتباع عمليات معينة على نسخة مستقلة عن الغرض الأصلي الذي نتعامل معه.

في php 5  لا توجد حاجة إلى تمرير الأغراض بالمرجع أ و إسنادهم بالمرجع.

ملاحظة:

لا تزال كل من عمليتي إسناد الأغراض بالمرجع أو تمريرهم بالمرجع مدعومة في php 5  وذلك في الحالة التي ترغب فيها فعلياً بتغير محتوى المتحول ( سواء كان غرض أو نمط).

بعض الميزات الغرضية التوجه الجديدة.

إن عدد الميزات غرضية التوجه الجديدة التي تم إضافتها واسع جداً , لذلك فيما يلي سنقوم فقط بتعداد قائمة بالميزات الأساسية الجديدة فقط :

1 : معدلات النفاذ public / private /protected   بالمستخدمة بالنسبة لكل من الطرائق methods  والخواص properties .

مثال

2 : الباني __construct()

فبدلاً من أن يكون اسم الباني هو نفسه اسم الصف , فيجب التصريح عنه الآن بالكلمة __construct() ,

3: دعم تعريف عملية هدم الغرض عبر تعريف طريقة الهادم __destructor() method

تمكننا من تعريف الهادم الذي يعمل عندما يتم تهديم الغرض

4: الواجهات interfaces

مما يمكن الصف من تحقيق أكثر من علاقة واحدة من نمط is_a  .

حيث أن الصف يستطيع أن يرث من صف واحد فقط , ولكنه يستطيع أن يقوم بتحقيق implement  أكثر من واجهة واحدة.

5: عملية نسخة من instnaceof operator :

إن مستوى اللغة هنا يمكننا من القيام بالتحقق من العلاقات التي من النمط is_a   . حيث أن التابع  is_a() الذي كان مستخدما في php 4  قد تم شجبه الآن لتحل العملية التالية بداله:

وبهدا القدر ننهي الحلقة الأولى على أن نتابع لاحقا إن شاء الله

وإلى ذلك الحين نستودعكم الله والسلام عليكم ورحمة الله وبركاته

Advertisements

, , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: