魔术方法__call

//__call魔术方法,当调用一个类的方法,此方法不存在
//就会执行__call方法
    class Computer {
        public function _run() {
            echo '运行';
        }    
        
        //采用__call()方法屏蔽调用
        //__call()里面有两个参数
        //第一个参数为调用的那个方法名
        //第二个参数为方法中传入的值
        public function __call($_methodName,$_argList) {
            echo $_methodName.'()not exist';
            //print_r($_argList);
        }
    }
    
    $computer = new Computer();
    //如果quiet()方法不存在,执行__call()方法
    $computer->quiet();


//------------------

class MethodTest 
{
    public function __call($name, $arguments) 
    {
        // 注意: $name 的值区分大小写
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }

    /**  PHP 5.3.0之后版本  */
    public static function __callStatic($name, $arguments) 
    {
        // 注意: $name 的值区分大小写
        echo "Calling static method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

    $obj = new MethodTest;
    $obj->runTest('in object context');

    MethodTest::runTest('in static context');  // PHP 5.3.0之后版本
    
    //以上例程会输出:

    //Calling object method 'runTest' in object context
    //Calling static method 'runTest' in static context

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值