zoukankan      html  css  js  c++  java
  • php类重载

    首先,因为PHP是弱类型语言,是不直接支持重载的,不过可以通过一些方法来实现重载。

    先说一下重写

    在子类继承父类方法后,自己重新定义父类的方法,包含函数名,形参(个数,顺序)完全相同,但权限修饰符可不同,子类的的权限修饰符应该大于等于父类的权限修饰符。

        class Animal{
            public function cat($var1,$var2)
            {
                echo 'Hello,'.$var1.$var2;
            }
        }
    
        class Small extends Animal{
            public function cat($a1, $a2){
                echo 'cat cat cat!!!'.$a1.$a2;
            }
        }
    
        $a = new Small();
        $a->cat(1,2);
    
        $b  = new Animal();
        $b->cat('laibao','hh');

    重载,多态的一种形式,通过对同一函数传值的不同,来获取不同的逻辑处理。但PHP是弱类型语言,不像JAVA、C++一样强类型,直接支持重载,不过 可以通过以下方式来间接的实现重载。

    <?php  
           
            function test1($name){  
                echo $name;  
            }  
       
            function test2($name,$age){  
                echo $name.$age;  
            }  
       
            function load(){  
                //返回输入的元素数目  
                $num=func_num_args();  
                //返回输入元素列表的数组形式  
                $arr=func_get_args();  
                   
                if($num==1){  
                    test1($arr[0]);  
                }else {  
                    test2($arr[0],$arr[1]);  
                }  
            }  
       
        load("a");  
        echo "";  
        load("a","b");  
    ?>
    <?php  
        class A{  
            //name :调用的方法名字。args:参数列表  
            function __call($name,$args){  
                $num=count($args);  
                if($num==1){  
                    $this->test1($args[0]);  
                }  
                else {  
                $this->test2($args[0],$args[1]);  
                }  
            }  
       
            function test1($name){  
                echo $name;  
            }  
            function test2($name, $age){  
                echo $name." ".$age;  
            }  
        }  
           
        $a=new A();  
        $a->a("a");  
        echo "";  
        $a->a("a","b");  
       
    ?>
  • 相关阅读:
    【MySQL笔记】字符串、时间日期转换
    【MySQL笔记】触发器,存储过程和函数
    【MySQL笔记】用户管理
    spray 处理 response 的通用函数
    akka pubsub example
    一个手写的 http client
    scala get ipv4 address
    akka cluster singleton
    akka cluster sharding
    akka cluster 初体验
  • 原文地址:https://www.cnblogs.com/wanghaokun/p/10627385.html
Copyright © 2011-2022 走看看