首页 > Web开发 > 详细

php -- 魔术方法 之 调用方法:__call()、__callStatic()

时间:2015-07-20 16:14:04      阅读:450      评论:0      收藏:0      [点我收藏+]

方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__call()方法

public function __call($name,$args){}  :用对象调用方法

public static function __callStatic($name,$args){}: 用类调用静态方法

  $name:被调用的方法名

  $args:被调用的方法的参数列表数组

 

<?php

    //PHP方法重载
    class Person{
        //方法
        private function test(){
            echo __METHOD__;
        }

        protected static function test1(){
            echo __METHOD__;
        }

        //增加魔术方法
        //有两个参数:第一个是方法名,第二个是参数数组
        public function __call($name,$args){
            //var_dump($name);//方法名字
            //var_dump($args);//参数数组
            //定义允许访问列表
            $allow = array(‘test‘);

            if(in_array($name,$allow))
                $this->$name();                        //可变方法
            else return false;
        }

        //增加一个静态方法的访问
        public static function __callStatic($name,$args){
            $allow = array(‘test1‘);

            if(in_array($name,$allow))
                self::$name();                        //可变方法
            else return false;
        }
    }

    echo ‘<pre>‘;

    //实例化
    $person = new Person;

    //访问私有方法
    //没有魔术方法之前
    //$person->test();            //出错
    //Person::test1();            //出错

    $person->test();            //有了__call魔术方法,且允许访问
    var_dump($person->test2());    //false

    Person::test1();

 

php -- 魔术方法 之 调用方法:__call()、__callStatic()

原文:http://www.cnblogs.com/hf8051/p/4661566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!