php中__call()方法使用

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

<无详细内容>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
    /*
        作者:shyhero
        邮箱:shyhero@outlook.com
        Q  Q:1757424878
    */
    class DB{
        private $sql = array(
            "field"=>"",
            "where"=>"",
            "order"=>"",
            "limit"=>"",
            "group"=>"",
            "having"=>""
        );
        public function __call($functionName,$arr){     //只有在私有成员数组中存在的键才能被调用
            $functionName = strtolower($functionName);
            if(array_key_exists($functionName,$this -> sql)){
                $this -> sql[$functionName] = $arr[0];
            }else{
                echo "调用的方法不存在";
            }
            return $this;
        }
        public function select(){
            echo "select from {$this -> sql['field']} user {$this -> sql['where']} {$this -> sql['order']} {$this -> sql['limit']} {$this -> sql['group']} {$this -> sql['having']}";
        }
    }
    $db = new DB();
    $db -> field('sex count(sex)')               //只有在私有成员数组中存在的键才能被调用
        -> where('where sex in("m","w")')
        -> group('group by sex')
        -> having('having avg(age) > 25')
        -> select();
    $db -> query('d');                           //这个方法不存在就不能调用