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

php call魔法函數示例代碼

編輯:PHP綜合
class Db2{
    private $sql = array(
        "field" => "",
        "where" => "",
        "order" => "",
        "limit" => "",
        "group" => "",
        "having" => "",
    );
   
    // 連貫操作調用field() where() order() limit() group() having()方法,組合sql語句
    function __call($methodName,$args){
        // 將第一個參數(代表不存在方法的方法名稱),全部轉成小寫方式,獲取方法名稱
        $methodName = strtolower($methodName);
       
        // 如果調用的方法名和成員屬性數組$sql下標對應上,則將第二個參數給數組中下標對應的元素
        if(array_key_exists($methodName,$this->sql)){
            $this->sql[$methodName] = $args[0];
        }else{
            echo '調用類'.get_class($this).'中的方法'.$methodName.'()不存在';
        }
        // 返回自己對象,則可以繼續調用本對象中的方法,形成連貫操作
        return $this;
    }
    // 輸出連貫操作後組合的一個sql語句,是連貫操作最後的一個方法
    function select(){
        echo "SELECT {$this->sql['field']} FROM  user {$this->sql['where']} {$this->sql['order']} {$this->sql['limit']} {$this->sql['group']}
                {$this->sql['having']}";
    }
}
        

$db2 = new Db2();

// 連貫操作
$db2->field('sex, count(sex)')
           ->where('where sex in ("男","女")')
           ->group('group by sex')
           ->having('having avg(age) > 25')
           ->select();

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