_call妙用

class Magic {  
    function __call($name,$arguments) {
        if($name=='foo') {  
            if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);  
            if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);  
        }  
    }   private function foo_for_int($x) {  
        print("oh an int!");  
    }   private function foo_for_string($x) {  
        print("oh a string!");  
    }  
} $x = new Magic();  
$x->foo(3);  
$x->foo("3");  
die;
class Magic {  
    function __call($name,$arguments) {
        //var_dump($name,$arguments);
        $name = '_'.$name;
        $this->$name($arguments[0],$arguments[1]);  
        //if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);  

    }   private function _foo_for_int($x,$y) {  
        print("oh an int!");  
    }   private function foo_for_string($x) {  
        print("oh a string!");  
    }  
} $x = new Magic();  
$x->foo_for_int(3,'ohjkn');  

 

posted @ 2014-05-30 18:51  adby  阅读(189)  评论(0编辑  收藏  举报