الرجوع للرئيسية

تعلم PHP مع ارسنعرفنا في الدرس السابع عشر و الثامن عشر ماهي برمجة الكائنات وماهي فوائدها وكيف تعمل وكيف نستخدمها, وعند اصدار النسخه رقم 5 من لغة PHP تم اعادة كتابة وهيكلة الكائنات في اللغه. تم اعادة النظر في نظام الكائنات القديم, واصدار نظام كائنات جديد, اقوى , افضل, خصائص اكثر. هذا هو موضوع درسنا لهذا اليوم, التعرف على جديد برمجة الكائنات في الاصدار الخامس من PHP و كما وعدتكم سوف يعتبر ( متفرقات ) و البقاء على الخط مع اللغه بعد انتهائنا من الدوره الكامله.

 

بسم الله الرحمن الرحيم

متطلبات قبل البدأ :

اهداف الدرس:

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

مقدمه :

عرفنا في الدرس السابع عشر و الثامن عشر ماهي برمجة الكائنات وماهي فوائدها وكيف تعمل وكيف نستخدمها, وعند اصدار النسخه رقم 5 من لغة PHP تم اعادة كتابة وهيكلة الكائنات في اللغه. تم اعادة النظر في نظام الكائنات القديم, واصدار نظام كائنات جديد, اقوى , افضل, خصائص اكثر. هذا هو موضوع درسنا لهذا اليوم, التعرف على جديد برمجة الكائنات في الاصدار الخامس من PHP و كما وعدتكم سوف يعتبر ( متفرقات ) و البقاء على الخط مع اللغه بعد انتهائنا من الدوره الكامله.

مؤسس التصنيف :

هل تذكر عندما كنا في الدرس السابع عشر نقوم بإنشاء مؤسس التصنيف بالطريقه ( function ) دعني اخبرك بشيئ ولكن لا تغضب مني, فتلك الطريقه لم تكن رسميه ولكن قمت بتعليمها لك لانها ( افضل ), والدليل على ذلك فالان لغة PHP في الاصدار رقم 5 قامت بجعل خاصية ( مؤسس التصنيف ) والذي يعني ( Constructor ) شيئ اساسي في برمجة الكائنات. انشاء مؤسس تصنيف في الاصدار رقم 5 يكون عن طريق الكلمه المفتاحيه ( __construct() ) واليك مثال يشرح لك الطريقه , انظر التالي:

ومن مسامحة هذه اللغه الجميله, فقد جعلت الطريقه القديمه ( التي قمت بتعلمها في الدرس السابع عشر ) تعمل ايضا, فلو ان المترجم لم يجد الكلمه المفتاحيه ( __construct() ) فسوف يقوم بالبحث عن معامل يبدأ بنفس اسم الكائن لكي يتم اعتباره انه مؤسس التصنيف.

ملاحظه: اذا كنت تستخدم مبدأ الوراثه واردت ان تقوم بأستخدام ( مؤسس التصنيف ) للكائن الاب في الكائن ( الوارث ) فيكون ذلك بالطريقه التاليه ( parent::__construct() ) لاحظ الكود التالي:

 

مدمر التصنيف :

في الاصدار الخامس من هذه اللغه تم اضافة خاصية تسمي ( Destructor ) ومعناها ( المدمر ) وهي شبيه للغات البرمجه مثل ( C++ ) وهذا المعامل يعمل في حالتين,

  1. جميع المؤشرات الى الكائن الغيت

  2. او عند تدمير الكائن بشكل مؤكد

ولاستخدام هذا المعامل نستخدم الكلمه المفتاحيه ( __destruct ) ومثال على ذلك , لاحظ الكود التالي:

ملاحظه : نفس طريقة مؤسس التصنيف في حالة الوراثه يتم استخدامها مع مدمر التصنيف

ملاحظه : يتم استدعاء معامل التدمير حين انتهاء عمل برنامجك بشكل تلقائي

الخواص :

تم في الاصدار الخامس تغيير طريقة الخواص بالكامل في لغة PHP فأصبحت اكثر قوة واكثر تحكما, والمبدأ الذي تحدثنا عنه ( Encapsulation ) تم تطبيقه بالكامل في هذا الاصدار. فعند تعلمنا لبرمجة الكائنات في الدوره سابقا كنا نقوم بإنشاء الخواص بالشكل التالي :

ولكن الرائع في PHP 5 هو اننا الان نتحكم في ( اظهار ) الخواص وهناك 3 انواع لهذا التحكم وهي :

  1. عام ( Public )

وهذه الخاصيه تجعل الخاصيه قابلا للوصول من اي مكان تريده. فلو ان عندنا كائن اسمه ( car ) وبه الخاصيه ( color ) فيمكننا الوصول الى هذا الخاصيه بالطريقه التاليه ( ->color ).

  1. محمي ( Protected )

وهذه الخاصيه تعني ان الخاصيه قابلا للوصل فقط من الكائنات التي تكون ( وارثه ) للكائن الاصلي.

  1. سري ( Private )

هذه الخاصيه هي ( الافضل ) وهي تعني ان التحكم في الخواص يكون فقط داخل الكائن الذي تم انشاءه ( في نفس الـ class )

لنقم برؤية مثال سريع لكيفية انشاء خواص بهذه الطرق الثلاث, لاحظ الكود التالي:

فلو على سبيل المثال , اردنا ان نقوم بإستخدام الخاصيه ( ) في كائن يرث الكائن ( car ) فلن يمكننا ذلك الا عن طريق ( معاملات ) تقوم بجعلنا نتحكم في الخاصيه.

ملاحظه : استخدام الكلمه المفتاحيه ( var ) لانشاء الخواص لن تعمل في لغة PHP الاصدار الخامس.

 

المعاملات :

ايضا في الاصدار الخامس من لغة PHP تم تغيير طريقة بناء المعاملات, واصبحت مثل الخواص, فهناك معاملات ( عامه ) و ( محميه ) و ( سريه ) لاحظ المثال التالي:

ملاحظه : انشاء معامل من غير ( public ) او ( private ) او ( protected ) فذلك سوف يجعل مترجم PHP يفترض ان المعامل من النوع ( public ) تلقائيا.

 

الكلمة المفتاحيه Final :

هذه الكلمه المفتاحيه تستخدم مع الكائن او المعامل وهي تجعل هذا الكائن على المرحله ( النهائيه ) ولا يمكن ابدا تغييره بإستخدام الطريقه ( overrideing ) للكائن او المعاملات. وزيادة على ذلك فإن الكائن الذي يبدأ بالكلمه Final فلا يمكن ان يستخدم في مبدأ الوراثه. لاحظ المثال التالي:

وناتج عمل هذه الطريقه عند انشاء كائن من الـ sportCar سوف يؤدي ذلك الى خطأ من النوع ( Fata error ).