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

 更新时间:2015年05月08日 11:25:58   投稿:hebedich  
对于弱类型语言来说,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的数据库接口和技术。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 基于ThinkPHP实现的日历功能实例详解

    基于ThinkPHP实现的日历功能实例详解

    这篇文章主要介绍了基于ThinkPHP实现的日历功能,结合实例形式详细分析了基于thinkPHP实现日历功能的相关界面布局、数据库操作与日期时间运算相关技巧,需要的朋友可以参考下
    2017-04-04
  • CI(Codeigniter)的Setting增强配置类实例

    CI(Codeigniter)的Setting增强配置类实例

    这篇文章主要介绍了Codeigniter的Setting增强配置类,结合实例形式较为详细的分析了Codeigniter增强配置类的具体实现步骤与相关技巧,需要的朋友可以参考下
    2016-01-01
  • Thinkphp 在api开发中异常返回依然是html的解决方式

    Thinkphp 在api开发中异常返回依然是html的解决方式

    今天小编就为大家整理了一篇Thinkphp 在api开发中异常返回依然是html的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP可变变量学习小结

    PHP可变变量学习小结

    可变变量,就是一个变量的变量名可以动态的设置和使用。语法形式是PHP的特殊语法,其他语言中少见,本文给大家分享php可变变量学习小结,对php可变变量相关知识感兴趣的朋友一起学习吧
    2015-11-11
  • Windows Apache2.2.11及Php5.2.9-1的安装与配置方法

    Windows Apache2.2.11及Php5.2.9-1的安装与配置方法

    很早就想在自己的机子上搭建PHP的开发环境,今天难得有这个机会,在网上找了一些教程和程序,实践了一把,过程是很艰辛的,因为遇到了很多的问题,在这里总结一下。
    2009-06-06
  • Yii框架获取当前controlle和action对应id的方法

    Yii框架获取当前controlle和action对应id的方法

    这篇文章主要介绍了Yii框架获取当前controlle和action对应id的方法,可实现获取当前controlle或action对应id的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • laravel 中某一字段自增、自减的例子

    laravel 中某一字段自增、自减的例子

    今天小编就为大家分享一篇laravel 中某一字段自增、自减的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 使用ThinkPHP+Uploadify实现图片上传功能

    使用ThinkPHP+Uploadify实现图片上传功能

    这篇文章主要介绍了使用ThinkPHP+Uploadify实现图片上传功能,需要的朋友可以参考下
    2014-06-06
  • php共享内存段示例分享

    php共享内存段示例分享

    在asp.net和java中都有共享内存,php除了可以使用Memcached等方式变通以外其实php也是支持共享内存的,下面使用shmop来实现这个功能
    2014-01-01

最新评论