الصلاحيات Visibility
بسم الله الرحمن الرحيم
في الدرس الأول من دوره البرمجه كائنيه التوجه تعرفنا علي أن الكلاس يتكون من خصائص وأساليب سنتعرف في هذا الدرس بإذن الله علي الصلاحيات التي يمكن أن تأخذها هذه الخصائص والأساليب .
في السابق بواسطه PHP4 كان من غير الممكن تحديد نطاق الخاصيه أو الإسلوب في الفئه وكان أغلب المبرمجين يقومون بكتابه تعليق فوق كل متغير أو داله لمعرفه نطاقها .
في PHP5 يجب أن يعرف نطاق الخاصيه أو الإسلوب في الفئه بواسطه إحدي الكلمات التاليه :
public
وتعني أن الأسلوب أو الخاصيه عامه أي يمكن إستخدامها داخل الفئه و يمكن إستخدامه خارج الفئه و يمكن توريثها إلي الفئات الفرعيه .
<?php class user { //مثال لخاصيه عام public $userName; // مثال لإسلوب عام public function doAnyThing($param) { // Do any thing ... } } ?>
protected
وتعني أن الأسلوب أو الخاصيه محميه أي يمكن إستخدامها داخل الفئه أو يمكن توريثها إلي الفئات الفرعيه لكن لايمكن إستخدامها خارج الفئه .
<?php class user { //مثال لخاصيه محميه protected $email; } ?>
private
وتعني أن الأسلوب أو الخاصيه خاصه أي يمكن إستخدامها داخل الفئه ولكن لا يمكن توريثها إلي الفئات الفرعيه و لايمكن إستخدامها داخل الفئه.
<?php class user { //مثال لخاصيه خاصه private $pass; } ?>
لنلخص الأن الثلاث تصاريح الممكن إعطائها للإسلوب أو الخاصيه
التصريح | إستخدامها داخل الفئه | إستخدامها خارج الفئه | توريثها للفئات الفرعيه |
public | يمكن | يمكن | يمكن |
protected | يمكن | لايمكن | يمكن |
private | يمكن | لايمكن | لايمكن |
ملحوظات :
- PHP5 مازالت تحتوي علي قواعد PHP4 فيمكنك مثلاُ تعريف الدوال بدون تحديد نطاقها ويمكن تعريف المتغيرات بواسطه كلمه var بدون تحديد نطاقها .
- قامت PHP5 بالمحافظه علي هذه القواعد حتي تستطيع البرامج التي كتبت بواسطه PHP4 من العمل تحت هذا الأصدار ولكن إذا كنت تقوم بكتابه إسكربت جديد فقم بكتابته بقواعد PHP5 الجديده وأترك قواعد PHP4 الباليه !!
- بعد إعطائك إحدي هذه التصاريح لخاصيه أو أسلوب ثم قمت بمخالفه هذه التصاريح سوف تقوم PHP بإعطائك رساله خطأ ثم توقف ترجمه الأسكربت ، لاحظ المثال التالي :
<?php class user { //لاحظ أنه متغير محمي protected $userEmail; } $newUser = new user; /* هذا السطر سوف يصدر خطأ لأننا قمنا بإستخدام متغير محميمن خارج الفئه */ echo $newUser->userEmail; ?>
وهذه هي رساله الخطأ الناتجه :
Fatal error: Cannot access protected property user::$userEmail in c:\wamp\www\code.php on line 14
تمرين بسيط :
ماهو التصريح الواجب إعطائه للمتغير $userEmail حتي لايحدث خطأ ؟
ملحوظات :
- الخاصيه property في البرمجه كائنيه التوجه = المتغير variable
- الأسلوب method في البرمجه كائنيه التوجه = الداله function
- الكلمه class تترجم الفئه أو الكلاس فلا فرق بينهم
- الكلمه Visibility ترجمتها الصلاحيات إن كان هناك ترجمه أفضل للمعني وليس حرفياً أرجو تنبيهي
والسلام عليكم ورحمه الله
holooli 6:17 صباحًا on 31 يناير 2009 رابط دائم
بارك الله فيك لكن لدي بعض الملاحظات:
1- لو سميت الفئة صنف لكان أفضل
2- استخدم محرر html بدل المحرر المرئي visual عند كتابة التدوينة كي يظهر الكود بشكل سليم فالمحرر المرئي يحول بعض الأشياء (مثل >)
نعطيه تصريح عام public
holooli 6:19 صباحًا on 31 يناير 2009 رابط دائم
أيضاً لو لم تكن تمانع سأضيف المدونة إلى موقع غيوم نظراً لتميزها:
http://www.gwewm.com
انتظر ردك أخي الكريم لأني لم أعرف كيف أتواصل معك إذ لاتوجد صفحة اتصل بنا
phpreference 6:37 صباحًا on 31 يناير 2009 رابط دائم
شكراً أخي holooli لإهتمامك بمدونتي
أتشرف بإضافه مدونتي في موقع غيوم فأنا من المتابعين له من فتره
وشكراً للفت إنتباهي للأكواد وسيتم تعديلها باًذن الله
holooli 6:39 صباحًا on 31 يناير 2009 رابط دائم
بارك الله فيك اسمي خالد الحوراني من مدونة الويب 2.0
سأقوم بإضافته الآن وسيتطلب بعض الوقت كي تظهر الخلاصات