1. 程式人生 > >php類重載

php類重載

大於 重新定義 cal this pub load UNC pan 修飾

首先,因為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");  
   
?>

php類重載