الصلاحيات 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 ترجمتها الصلاحيات إن كان هناك ترجمه أفضل للمعني وليس حرفياً أرجو تنبيهي

والسلام عليكم ورحمه الله

Bookmark and Share