يمكنك جعل الكلاس يدرج كلاس آخر ويصل الى كل طرقه،
وبالتالي سيمكنك ذلك من تنظيم كلاساتك..
طريقة العمل:
لنفترض أن لدينا الكلاس a على النحو التالي:
وبالتالي سيمكنك ذلك من تنظيم كلاساتك..
طريقة العمل:
لنفترض أن لدينا الكلاس a على النحو التالي:
class a {
function m1(){
return "a [m1]";
}
function m2($x){
return "a [m2][$x]";
}
}
والكلاس b على النحو التالي:
class b {
private $obj_name;
private $obj;
function load($obj){
if(class_exists($obj)){
$this->obj_name = $obj;
$this->obj = new $obj();
}
}
function get_method($method, $var=''){
return $this->obj->$method($var);
}
function get(){
$this->a = new a();
echo $this->a->m1();
}
function get_obj(){
return $this->obj;
}
}
فإن لدينا عدة طرق للحصول على طرق الكائن a من خلال الكائن b:
$b = new b();
$b->load('a');
echo $b->get_method('m1');
echo '<br>';
echo $b->get_method('m2', 100);
echo '<br>';
$b->get();
echo '<br>';
echo $b->get_obj()->m2(200);
شرح الكلاس b:
1) المتغيرات:
1) المتغيرات:
private $obj_name;
private $obj;
- المتغير $obj_name يحفظ اسم الكلاس الذي سيتم استيراده
- المتغير $obj يحفظ الكائن (بعد التنفيذ)
- المتغير $obj يحفظ الكائن (بعد التنفيذ)
شرح دوال الكلاس b:
الدالة load:
الدالة load:
function load($obj){
if(class_exists($obj)){
$this->obj_name = $obj;
$this->obj = new $obj();
}
}
تتحقق من وجود الكلاس أولاً
تحتفظ باسم الكلاس في المتغير obj_name
تحتفظ بنسخة للكائن في المتغير obj
تحتفظ باسم الكلاس في المتغير obj_name
تحتفظ بنسخة للكائن في المتغير obj
الدالة get_method:
function get_method($method, $var=''){
return $this->obj->$method($var);
}
تعيد طريقة من طرق الكائن المستورد مع امكانية تمرير وسيط
الدالة get
function get(){
$this->a = new a();
echo $this->a->m1();
}
طريقة مباشرة للحصول على إحدى طرق الكائن المستورد
الدالة get_obj
function get_obj(){
return $this->obj;
}
طريقة للحصول على الكائن بكل طرقه
2:48 م
Hisham Dalal
0 تعليقات:
إرسال تعليق