程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php的__call 與__callStatic 魔法方法

php的__call 與__callStatic 魔法方法

編輯:PHP綜合

php 5.3 後新增了 __call 與__callStatic 魔法方法。

__call 當要調用的方法不存在或權限不足時,會自動調用__call 方法。

__callStatic 當調用的靜態方法不存在或權限不足時,會自動調用__callStatic方法。

__call($funcname, $arguments)

__callStatic($funcname, $arguments)

參數說明:

$funcname String 調用的方法名稱。

$arguments Array 調用方法時所帶的參數。

__call 例子

<?php  
      
class Member{  
      
    protected $memberdata = array();  
      
    public function __call($func, $arguments){  
        list($type, $name) = explode('_', $func);  
          
        if(!in_array($type, array('set','get')) || $name==''){  
            return '';  
        }  
      
        switch($type){  
            case 'set':  
                $this->memberdata[$name] = $arguments[0];  
                break;  
                  
            case 'get':  
                return isset($this->memberdata[$name])? $this->memberdata[$name] : '';  
                break;  
                  
            default:  
        }  
      
    }  
      
}  
      
      
class User extends Member{  
      
    public function show(){  
        if($this->memberdata){  
            foreach($this->memberdata as $key=>$member){  
                echo $key.':'.$member.'<br>';  
            }  
        }  
    }  
      
}  
      
      
class Profession extends Member{  
      
    public function show(){  
        if($this->memberdata){  
            foreach($this->memberdata as $key=>$member){  
                echo $key.':'.$member.'<br>';  
            }  
        }  
    }  
      
}  
      
$userobj = new User();  
$userobj->set_name('fdipzone');  
$userobj->set_age(29);  
$userobj->show();  
      
$probj = new Profession();  
$probj->set_profession('IT SERVICE');  
$probj->set_price(2500);  
$probj->show();  
      
?>

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved