php教程

超轻量级php框架startmvc

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

更新时间:2020-03-04 01:18:16 作者:startmvc
函数重载的替代方法-伪重载,下面看一个具体的实例代码。<?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 ;
 }
}
?>

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

php 伪重载