zoukankan      html  css  js  c++  java
  • php -- 魔术方法 之 调用方法:__call()、__callStatic()

    方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__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();
  • 相关阅读:
    Delphi6函数大全(1)
    chr码值对应列表大全
    delphi控制POS打印机
    java network programming 第七章
    loop msn 2
    java ftp 资源
    java network programming 第六章
    IM模型的几个概念
    TCP/IP网络互连技术 卷3 winsock篇
    看你网络安全的水平!!
  • 原文地址:https://www.cnblogs.com/hf8051/p/4661566.html
Copyright © 2011-2022 走看看