加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-04-06 12:59:03 所属栏目:PHP教程 来源:
导读:对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现,但是,可以通过下面的方法来实现简单的<? 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 ; 

 } 

?> 

伪重载吧。

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

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!