الثلاثاء، 12 أبريل 2011

تنظيم واستيراد الكلاسات من داخل الكلاسات:

يمكنك جعل الكلاس يدرج كلاس آخر ويصل الى كل طرقه،
وبالتالي سيمكنك ذلك من تنظيم كلاساتك..

طريقة العمل:

لنفترض أن لدينا الكلاس 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) المتغيرات:


private $obj_name;
    private $obj; 

- المتغير $obj_name يحفظ اسم الكلاس الذي سيتم استيراده
- المتغير $obj يحفظ الكائن (بعد التنفيذ)

شرح دوال الكلاس b:

الدالة load:

function load($obj){
        if(class_exists($obj)){
            $this->obj_name = $obj;
            $this->obj = new $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 تعليقات:

إرسال تعليق

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates | تعريب وتطوير : قوالب بلوجر معربة