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-09-09
  • Yii框架常见缓存应用实例小结

    Yii框架常见缓存应用实例小结

    这篇文章主要介绍了Yii框架常见缓存应用,结合实例形式分析了Yii框架缓存相关的配置、获取、查询等操作技巧与注意事项,需要的朋友可以参考下
    2019-09-09
  • ThinkPHP基于PHPExcel导入Excel文件的方法

    ThinkPHP基于PHPExcel导入Excel文件的方法

    这篇文章主要介绍了ThinkPHP基于PHPExcel导入Excel文件的方法,对于Excel文件的上传、读取操作以及写入数据库等都做了较为详尽的讲述,在进行项目开发的过程中非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • 百度地图经纬度转换到腾讯地图/Google 对应的经纬度

    百度地图经纬度转换到腾讯地图/Google 对应的经纬度

    本篇文章主要给大家介绍百度地图经纬度转换到腾讯地图/Google 对应的经纬度.需要的朋友可以参考下
    2015-08-08
  • smarty内置函数foreach用法实例

    smarty内置函数foreach用法实例

    这篇文章主要介绍了smarty内置函数foreach用法,实例分析了smarty内置的foreach函数使用技巧与相关注意事项,需要的朋友可以参考下
    2015-01-01
  • Laravel框架实现的rbac权限管理操作示例

    Laravel框架实现的rbac权限管理操作示例

    这篇文章主要介绍了Laravel框架实现的rbac权限管理操作,结合实例形式分析了Laravel框架权限控制rbac相关数据库创建、读写及权限判断等操作技巧,需要的朋友可以参考下
    2019-01-01
  • 分享一段php获取linux服务器状态的代码

    分享一段php获取linux服务器状态的代码

    正在做的项目中,需要使用php获取Linux服务器状态,度娘了一下,发现绝大部分都是基于WIN系统的,好吧,自力更生,分享给大家一段Linux的代码
    2014-05-05
  • 浅析iis7.5安装配置php环境

    浅析iis7.5安装配置php环境

    windows server 2008 和 windows server 2003 是目前国内比较主流的服务器操作系统,其搭建php的环境也是多种多样,其中IIS+Fastcgi+php+mysql安装是最简单的。
    2015-05-05
  • PHP中使用memcache存储session的三种配置方法

    PHP中使用memcache存储session的三种配置方法

    下面简单说下PHP项目分布式部署中,SESSION的同步方案中的一种,使用Memcache来存储SESSION。并总结了三种配置方式,需要的朋友可以参考下
    2014-04-04
  • PHP生成json和xml类型接口数据格式

    PHP生成json和xml类型接口数据格式

    在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
    2015-05-05

最新评论