يمكنك جعل الكلاس يدرج كلاس آخر ويصل الى كل طرقه،
وبالتالي سيمكنك ذلك من تنظيم كلاساتك..
طريقة العمل:
لنفترض أن لدينا الكلاس 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; }
طريقة للحصول على الكائن بكل طرقه
0 تعليقات:
إرسال تعليق