التخطي إلى المحتوى
الدرس الثالث  –  Object-Oriented PHP)  Key OOP Concepts)
Object-Oriented PHP

  الدرس الثاني Key OOP Concepts

إعادة التحميل للخاصية Property Overloading

يتم إعادة تحميل الـ protected method عند  الدخول إليها أو معالجتها عبر   public method وبهذا الاسلوب يكون الوصول للبيانات في هذه الدوال المحمية كأنها عامة.

هذه الـ methods تسمى getter ( accessors ) and setter (  manipulated ) وتعمل تلقائيا عند إستعاء الخاصية أو التعديل على  قيمتها.

ولسوء الحظ الـ php  لا توفر هذه الخاصية  لذلك نستخدم دوال عامة للتعامل مع مثل هذه التقنية مثلا تقوم بإنشاء  getter and setter methods .
PHP v 5.X

 مكنت خاصية الـ overloading عن طريق    __set and __get  تنفذ هذه الدوال عند التعامل مع خواص غير موجودة في الكلاس ، لذلك تستخدم هذه الخاصية في إظهار الأخطاء بالاضافة لتوسيع الكلاسات أثناء المعالجة بإنشاء متغيرات جديدة وسوف نناقش هذه الدوال في هذا الدرس إن شاء الله.

Setting Properties with the __set() Method

وتعرف بـ mutator, or setter method  وهي مسؤولة عن إخفاء تعيين الخاصية والتحقق من من البيانات قبل تعيينها لمتغير او خاصية وصيغتها العامة كالتالي:

boolean __set([string property_name],[mixed value_to_assign])

الدالة __set() تأخذ متغيرين وترجع قيمة منطقية
فالكلمة boolean تعني أن الدالة ترجع قيمة منطقية TRUE or FLASE
والكلمة  property_name تعني أن إسم الخاصية ( المتغير ) يكون String
والكلمة  value_to_assign تعني القيمة وتكون أي نوع (Arrays, String, Integer …etc).

مثال لها:

    class Employee
{
var $name;
function __set($propName, $propValue)
{
echo “Nonexistent variable: $$propName!”;
}
}
$employee = new Employee ();
$employee->name = “Mario”;
$employee->title = “Executive Chef”;
الخرج يكون كالتالي:
    Nonexistent variable: $title!

وهذا المثال لإكتشاف الخطأ وإرجاع رسالة أن هنالك مشكلة في إسناد خاصي ماوالسبب هنا ان الخاصية title غير معرفة في الكﻻس.

مثال آخر على توسعة الكﻻس:

    class Employee
{        public $name;
function __set($propName, $propValue)
{
$this->$propName = $propValue;
}
}

$employee = new Employee();
$employee->name = “Mario”;
$employee->title = “Executive Chef”;

echo “Name: “.$employee->name;
echo “<br />”;
echo “Title: “.$employee->title;

والخرج هنا يكون كالتالي
    Name: Mario
Title: Executive Chef
Getting Properties with the __get() Method
تعرف بـ accessor, or mutatget   وهي المسؤولة عن التغليف والتعليمات البرمجية المطلوبة لاسترجاع متغير من الكﻻس والصيغة العامة لها:
boolean __get([string property_name])
الدالة __get()  تأخذ متغير واحد
فالكلمة boolean تأخذ قيمة TRUE  عند نجاح عمليةإرجاع القيمة المطلوبة و FALSE عند فشل العملية
    class Employee
{
public $name;
public $city;
protected $wage;
function __get($propName)
{
echo “__get called!<br />”;
$vars = array(“name”,”city”);

if (in_array($propName, $vars))
{
return $this->$propName;
} else {
return “No such variable!”;
}
}
}

$employee = new Employee();
$employee->name = “Mario”;
echo $employee->name.”<br />”;
echo $employee->age;

يكون الخرج في هذا الكود :
    Mario
__get called!
No such variable!
إلى هذه النقطة نكون قد وصلنا إلى نهاية درس اليوم موعدنا يوم السبت من الاسبوع القادم ان شاء الله

عن الكاتب

التعليقات

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Shares