php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解
對于弱類型語言來說,PHP函數重載,并不像一般的OOP那樣。而弱類型本來就不區分,所以無法通過這些來實現。但是,可以通過下面的方法來實現簡單的偽重載吧。
函數重載的替代方法-偽重載,下面看一個具體的實例代碼。
php
//函數重載的替代方法-偽重載
//
//確實,在PHP中沒有函數重載這個概念,讓很多時候我們無法進行一些處理,甚至有時候不得不在函數后面定義好N個參數
//在看到了func_get_arg,func_get_args,func_num_args,這三個函數的時候,,你們是不是想起了什么?
function testOne ( $a ) {
echo (' 一個參數就這樣 ');
}
function testTwo ( $a , $b ){
echo (' 兩個參數的就這樣 ');
}
function testThree ($a, $b, $c ) {
echo (' 黑黑,這是三個參數的 ');
}
function test () {
$argNum = func_num_args ();
// 這一段其實可以用 $_arg = func_get_args() 來獲得所有的參數,只是要用數組而已,不方便我下面的表達,呵呵
for ( $i = 0 ; $i < $argNum ; $i ++ ) {
$_arg_ { $i } = func_get_arg ( $i );
}
switch ( $argNum ) {
case 1 :
testOne( $_arg_1 );
break ;
case 2 :
testTwo( $_arg_1, $_arg_2 );
break ;
case 3 :
testThree( $_arg_1, $_arg_2, $_arg_3 );
break ;
default :
echo ( ' 這是沒有參數的情況 ' );
break ;
}
}
test();
echo ( ' ' );
test( 1 );
echo ( ' ' );
test( 1 , 2 );
echo ( ' ' );
test( 1 , 2 , 3 );
// 這些只是在函數中的運用,其實最主要的還是在類中的運用
//如果這些用到類里面我就不需要擔心構造函數是否有幾個參數了,不是嗎?
class test {
var $a = 0 ;
var $b = 0 ;
function test () {
$argNum = func_num_args ();
$_arg = func_get_args ();
switch ($argNum ) {
case 1 :
$this -> test1( $_arg [ 0 ] );
break ;
case 2 :
$this -> test2( $_arg [ 0 ] , $_arg [ 1 ]);
break ;
default :
$this -> a = 0 ;
$this -> b = 1 ;
break ;
}
}
function test1 ($a) {
$this -> a = $a ;
}
function test2 ($a, $b) {
$this -> a = $a ;
$this -> b = $b ;
}
}
?>
以上所述就是本文的全部內容了,希望大家能夠喜歡。
總結
以上是生活随笔為你收集整理的php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php docker开发环境,使用Doc
- 下一篇: 芝麻信用有什么等级