📁 آخر الأخبار

الدرس الثالث والثلاثون: برمجة الكائنات في PHP الاصدار 5

اهداف الدرس:
  • مقدمه
  • مؤسس التصنيف
  • مدمر التصنيف
  • الخواص
  • المعاملات
  • الكلمه المفتاحيه Final

مقدمه :
عرفنا في الدرس السابع عشر و الثامن عشر ماهي برمجة الكائنات وماهي فوائدها وكيف تعمل وكيف نستخدمها, وعند اصدار النسخه رقم 5 من لغة PHP تم اعادة كتابة وهيكلة الكائنات في اللغه. تم اعادة النظر في نظام الكائنات القديم, واصدار نظام كائنات جديد, اقوى , افضل, خصائص اكثر. هذا هو موضوع درسنا لهذا اليوم, التعرف على جديد برمجة الكائنات في الاصدار الخامس من PHP و كما وعدتكم سوف يعتبر ( متفرقات ) و البقاء على الخط مع اللغه بعد انتهائنا من الدوره الكامله.
مؤسس التصنيف :
هل تذكر عندما كنا في الدرس السابع عشر نقوم بإنشاء مؤسس التصنيف بالطريقه ( function ) دعني اخبرك بشيئ ولكن لا تغضب مني, فتلك الطريقه لم تكن رسميه ولكن قمت بتعليمها لك لانها ( افضل ), والدليل على ذلك فالان لغة PHP في الاصدار رقم 5 قامت بجعل خاصية ( مؤسس التصنيف ) والذي يعني (Constructor ) شيئ اساسي في برمجة الكائنات. انشاء مؤسس تصنيف في الاصدار رقم 5 يكون عن طريق الكلمه المفتاحيه ( __construct() ) واليك مثال يشرح لك الطريقه , انظر التالي:
ومن مسامحة هذه اللغه الجميله, فقد جعلت الطريقه القديمه ( التي قمت بتعلمها في الدرس السابع عشر ) تعمل ايضا, فلو ان المترجم لم يجد الكلمه المفتاحيه ( __construct() ) فسوف يقوم بالبحث عن معامل يبدأ بنفس اسم الكائن لكي يتم اعتباره انه مؤسس التصنيف.
ملاحظه: اذا كنت تستخدم مبدأ الوراثه واردت ان تقوم بأستخدام ( مؤسس التصنيف ) للكائن الاب في الكائن ( الوارث ) فيكون ذلك بالطريقه التاليه ( parent::__construct() ) لاحظ الكود التالي:
مدمر التصنيف  :
في الاصدار الخامس من هذه اللغه تم اضافة خاصية تسمي ( Destructor ) ومعناها ( المدمر ) وهي شبيه للغات البرمجه مثل ( C++ )وهذا المعامل يعمل في حالتين,
  1. جميع المؤشرات الى الكائن الغيت
  2. او عند تدمير الكائن بشكل مؤكد
ولاستخدام هذا المعامل نستخدم الكلمه المفتاحيه ( __destruct) ومثال على ذلك , لاحظ الكود التالي:
ملاحظه : نفس طريقة مؤسس التصنيف في حالة الوراثه يتم استخدامها مع مدمر التصنيف
ملاحظه : يتم استدعاء معامل التدمير حين انتهاء عمل برنامجك بشكل تلقائي
الخواص  :
تم في الاصدار الخامس تغيير طريقة الخواص بالكامل في لغة PHP فأصبحت اكثر قوة واكثر تحكما, والمبدأ الذي تحدثنا عنه (Encapsulation ) تم تطبيقه بالكامل في هذا الاصدار. فعند تعلمنا لبرمجة الكائنات في الدوره سابقا كنا نقوم بإنشاء الخواص بالشكل التالي :
ولكن الرائع في PHP5 هو اننا الان نتحكم في ( اظهار ) الخواص وهناك 3 انواع لهذا التحكم وهي :
1. عام (Public )
وهذه الخاصيه تجعل الخاصيه قابلا للوصول من اي مكان تريده. فلو ان عندنا كائن اسمه ( car ) وبه الخاصيه ( color ) فيمكننا الوصول الى هذا الخاصيه بالطريقه التاليه ( $car->color ).
2. محمي (Protected )
وهذه الخاصيه تعني ان الخاصيه قابلا للوصل فقط من الكائنات التي تكون ( وارثه ) للكائن الاصلي.
3. سري (Private )
هذه الخاصيه هي (الافضل) وهي تعني ان التحكم في الخواص يكون فقط داخل الكائن الذي تم انشاءه ( في نفس الـ class )
لنقم برؤية مثال سريع لكيفية انشاء خواص بهذه الطرق الثلاث, لاحظ الكود التالي:
فلو على سبيل المثال , اردنا ان نقوم بإستخدام الخاصيه ( $on ) في كائن يرث الكائن ( car ) فلن يمكننا ذلك الا عن طريق (معاملات ) تقوم بجعلنا نتحكم في الخاصيه.
ملاحظه : استخدام الكلمه المفتاحيه ( var ) لانشاء الخواص لن تعمل في لغة PHP الاصدار الخامس.
المعاملات :
ايضا في الاصدار الخامس من لغة PHP تم تغيير طريقة بناء المعاملات, واصبحت مثل الخواص, فهناك معاملات ( عامه ) و ( محميه ) و( سريه ) لاحظ المثال التالي:
ملاحظه : انشاء معامل من غير ( public ) او ( private ) او ( protected ) فذلك سوف يجعل مترجم PHP يفترض ان المعامل من النوع (public ) تلقائيا.
الكلمة المفتاحيه Final :
هذه الكلمه المفتاحيه تستخدم مع الكائن او المعامل وهي تجعل هذا الكائن على المرحله ( النهائيه ) ولا يمكن ابدا تغييره بإستخدام الطريقه ( overrideing ) للكائن او المعاملات. وزيادة على ذلك فإن الكائن الذي يبدأ بالكلمه Final فلا يمكن ان يستخدم في مبدأ الوراثه. لاحظ المثال التالي:
وناتج عمل هذه الطريقه عند انشاء كائن من الـ sportCar سوف يؤدي ذلك الى خطأ من النوع ( Fata error ).


سؤال على الدرس :

  1. قم بإنشاء كائن كامل بطريقة PHP 5 ورئة ناتجك , وهل لديك القابليه لان تعمل مع هذه التغيرات بكل سهوله ام لا.
  2. قم بمراجعة دليل تشغيل لغةPHP من الموقع الرسمي لكي تقوم بالمرور على بعض الخواص التي لم امر عليها في هذاالدرس, فكما تعلم انا اقوم بجزء وانت اذا لديك الاهتمام تكمل باقي الجزء
الدرس القادم:
لا اعلم الى الان ماهو الدرس القادم والذي يجعلك في نفس طريق تطوير لغة PHP والمستجدات فيها, ولكن بإذن الله سوف احاول ان اقوم بجمع النقاط الجديده وانشرها لك هنا على شكل دروس متفرقه
dwefo
dwefo
تعليقات