网络编程
位置:首页>> 网络编程>> php编程>> php函数重载的替代方法--伪重载详解

php函数重载的替代方法--伪重载详解

作者:hebedich  发布时间:2023-11-18 10:24:06 

标签:php,伪重载

函数重载的替代方法-伪重载,下面看一个具体的实例代码。


<? 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 ;
}
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com