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

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

مدمر
التصنيف :
في الاصدار
الخامس من هذه اللغه تم اضافة خاصية تسمي ( Destructor
) ومعناها ( المدمر ) وهي شبيه للغات البرمجه
مثل ( C++
) وهذا المعامل يعمل في حالتين,
-
جميع
المؤشرات الى الكائن الغيت
-
او عند
تدمير الكائن بشكل مؤكد
ولاستخدام
هذا المعامل نستخدم الكلمه المفتاحيه (
__destruct
) ومثال على ذلك , لاحظ الكود
التالي:

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

ولكن
الرائع في PHP 5 هو اننا
الان نتحكم في ( اظهار ) الخواص وهناك 3 انواع لهذا
التحكم وهي :
-
عام (
Public )
وهذه
الخاصيه تجعل الخاصيه قابلا للوصول من اي مكان تريده.
فلو ان عندنا كائن اسمه ( car )
وبه الخاصيه ( color )
فيمكننا الوصول الى هذا الخاصيه بالطريقه
التاليه (
->color ).
-
محمي
( Protected )
وهذه
الخاصيه تعني ان الخاصيه قابلا للوصل فقط من الكائنات
التي تكون ( وارثه ) للكائن الاصلي.
-
سري (
Private )
هذه
الخاصيه هي ( الافضل )
وهي تعني ان التحكم في الخواص يكون فقط داخل الكائن
الذي تم انشاءه ( في نفس الـ class
)
لنقم برؤية
مثال سريع لكيفية انشاء خواص بهذه الطرق الثلاث, لاحظ
الكود التالي:

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

ملاحظه
: انشاء معامل من غير ( public )
او ( private ) او (
protected ) فذلك سوف يجعل
مترجم PHP يفترض ان المعامل
من النوع ( public )
تلقائيا.
الكلمة
المفتاحيه Final :
هذه الكلمه
المفتاحيه تستخدم مع الكائن او المعامل وهي تجعل هذا
الكائن على المرحله ( النهائيه ) ولا يمكن ابدا تغييره
بإستخدام الطريقه ( overrideing )
للكائن او المعاملات. وزيادة على ذلك فإن
الكائن الذي يبدأ بالكلمه Final
فلا يمكن ان يستخدم في مبدأ الوراثه. لاحظ
المثال التالي:
وناتج عمل
هذه الطريقه عند انشاء كائن من الـ
sportCar سوف يؤدي ذلك
الى خطأ من النوع ( Fata error ).