這篇文章將為大家詳細(xì)講解有關(guān)php如何實(shí)現(xiàn)重載,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
我們一直強(qiáng)調(diào)成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)的建站公司不一定是大公司,成都創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。php實(shí)現(xiàn)重載的方法:1、弱類型,無需定義變量類型;2、可選參數(shù),允許變量設(shè)置默認(rèn)值;3、可變參數(shù);4、使用魔術(shù)方法【__call()】。
php實(shí)現(xiàn)重載的方法:
php是弱類型語言,并沒有像JAVA這種強(qiáng)類型語言一樣有重載。
重載一般來說就是擁有相同的函數(shù)名或方法名,但是參數(shù)列表卻不同(包括參數(shù)個(gè)數(shù)和參數(shù)類型)
從這個(gè)定義來說,php是沒有重載的,因?yàn)閜hp不允許存在相同的函數(shù)名。
但是沒有并不意味著不能實(shí)現(xiàn)。
php有四種機(jī)制可以實(shí)現(xiàn)重載:(下面用java進(jìn)行對(duì)比)
1、弱類型,無需定義變量類型
先舉一個(gè)JAVA重載的例子:
class demo { public static void main (String[] args) { sum(1,1);//2 sum(1,1.5);//2.5 sum(1.5,1.5);//3.0 } public static void sum(int var1,int var2){ System.out.println(var1+var2); } public static void sum(int var1,double var2){ System.out.println(var1+var2); } public static void sum(double var1,double var2){ System.out.println(var1+var2); } }
上面的代碼如果用php語言實(shí)現(xiàn):
<?php function sum($var1,$var2){ echo $var1+$var2; } sum(1,1);//2 sum(1,1.5);//2.5 sum(1.5,1.5);//3 ?>
2、可選參數(shù),允許變量設(shè)置默認(rèn)值
JAVA重載例子:
class demo { public static void main (String[] args) { sum(1,2);//3 sum(1,2,3);//6 } public static void sum(int var1,int var2){ System.out.println(var1+var2); } public static void sum(int var1,int var2,int var3){ System.out.println(var1+var2+var3); } }
用php可選參數(shù)特性實(shí)現(xiàn):
<?php function sum($var1,$var2,$var3=NULL){//$var3設(shè)置默認(rèn)值 echo $var1+$var2+$var3; } sum(1,2);//2 sum(1,2,3);//2.5 ?>
可以看到同樣的功能,但是php這種弱類型語言實(shí)現(xiàn)起來更簡單
3、可變參數(shù)
主要用到以下兩個(gè)函數(shù):
func_num_args()
返回函數(shù)的參數(shù)個(gè)數(shù)
func_get_args()
返回一個(gè)包含函數(shù)參數(shù)列表的數(shù)組
具體實(shí)現(xiàn)方式:
<?php class demo{ public function method(){ $numargs = func_num_args();//獲得參數(shù)數(shù)量 $args = func_get_args();//獲得參數(shù)數(shù)組 switch ($numargs) {//通過變量個(gè)數(shù)來確定調(diào)用哪個(gè)方法 case 2: $this->method2($args[0],$args[1]); break; case 3: $this->method3($args[0],$args[1],$args[2]); break; } } private function method2($var1,$var2){ #code... } private function method3($var1,$var2,$var3){ #code... } } //調(diào)用 $obj = new demo(); $obj->method('var1','var2'); $obj->method('var1','var2','var3'); //看起來似乎通過一個(gè)接口調(diào)用 //但其實(shí)內(nèi)部已經(jīng)調(diào)用了各自定義的方法 ?>
4、使用魔術(shù)方法 __call()
public mixed __call ( string $name , array $arguments )
在對(duì)象中調(diào)用一個(gè)不可訪問的方法時(shí),__call()
會(huì)被自動(dòng)調(diào)用
$name參數(shù)是要調(diào)用的方法名稱 $argument參數(shù)是被調(diào)用方法的參數(shù)數(shù)組
具體實(shí)現(xiàn)方式類似上面的第三要點(diǎn):
<?php class demo{ public function __call($name,$arguments){ if($name == "method"){ switch (count($arguments)) {//獲得參數(shù)數(shù)組個(gè)數(shù) case 2: $this->method2($args[0],$args[1]); break; case 3: $this->method3($args[0],$args[1],$args[2]); break; } } } private function method2($var1,$var2){ #code... } private function method3($var1,$var2,$var3){ #code... } } //調(diào)用 $obj = new demo(); $obj->method("var1","var2"); $obj->method("var1","var2","var3"); ?>
關(guān)于php如何實(shí)現(xiàn)重載就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)頁標(biāo)題:php如何實(shí)現(xiàn)重載-創(chuàng)新互聯(lián)
文章起源:http://m.rwnh.cn/article12/djicgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信公眾號(hào)、響應(yīng)式網(wǎng)站、定制開發(fā)、動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容