PHP利用func_get_args和func_num_args函数实现函数重载实例_php技巧

本文实例讲述了PHP利用func_get_args和func_num_args函数实现函数重载的方法。分享给大家供大家参考。具体方法分析如下:

学习php的朋友都知道php本身是没有函数重载这一说的,更没说像java,c那样使用方法,但如果我们深入了解一下会发现可以在php中使用func_get_args()和func_num_args()函数实现函数重载,下面来举两个函数重载例子.这两个函数实现函数的重载.

1、默认参数,如果一个函数里面,这不是必须参数,而添加相应的默认值,就可以完成相应的功能,代码如下:

复制代码 代码如下:

function overloadFun($param1, $param2 = '1',$param3 = true) 

 // do something  
}

利用函数func_get_args()和call_user_func_array(),PHP代码如下:

复制代码 代码如下:

function rewrite() {    
$args = func_get_args();    
if(func_num_args() == 1) {    
func1($args[0]);    
} else if(func_num_args() == 2) {    
func2($args[0], $args[1]);    
}    
}    
   
function func1($arg) {    
echo $arg;    
}    
   
function func2($arg1, $arg2) {    
echo $arg1, ' ', $arg2;    
}    
   
rewrite('PHP'); //调用func1    
rewrite('PHP','China'); //调用func2

2、使用默认值,从而根据输入,得到自己想要的结果,代码如下:

复制代码 代码如下:

function test($name="小李",$age="23"){   
echo $name."  ".$age;   
}   
test();   
echo "<br/>";   
test("a");   
echo "<br/>";   
test("a","b");

3、利用__call($name, $arg) 函数进行处理,代码如下:

复制代码 代码如下:

<?php 
class OverLoad{ 
function __call($name, $args) 

  if($name=='overloadFun') 
  { 
   switch(count($args)) 
   { 
    case 0: $this->overloadFun0();break; 
    case 1: $this->overloadFun1($args[0]); break; 
    case 2: $this->overloadFun2($args[0], $args[1]); break; 
    default: //do something 
      break; 
   } 
  } 

    
function overloadFun0() 

  echo 0; 


function overloadFun1($var1) 

  echo $var1; 

function overloadFun2($var1,$var2) 

   
  echo $var1+$var2; 
   } 
}   
$test=new OverLoad(); 
$test->overloadFun()."<br />".  
$test->overloadFun(1)."<br />".  
$test->overloadFun(1,2)."<br />"; 
?>

有了这样的方法之后我们就可以利用它们来实现简单函数重载了,但有一点要注明的是php 作为一种弱类型语言,本身不能像强类型如java,c++那样,直接的实现重载,至少现在不可以以后版本会不会有我们不知道.

希望本文所述对大家的PHP程序设计有所帮助。

时间: 2024-10-29 17:00:15

PHP利用func_get_args和func_num_args函数实现函数重载实例_php技巧的相关文章

PHP图片处理之使用imagecopy函数添加图片水印实例_php技巧

为图片添加水印也是图片处理中常见的功能.因为只要在页面中见到的图片都可以很轻松地拿到,你辛辛苦苦编辑的图片不想被别人不费吹灰之力拿走就用,所以为图片添加水印以确定版权,防止图片被盗用.制作水印可以使用文字(公司名称加网址),也可以使用图片(公司LOGO),图片水印效果更好一些,因为可以通过一些做图片软件进行美化.使用文字做水印,只需要在图片上画一些文字即可.如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分.该函数的原型如下所示: 复制代码 代码如下: b

PHP利用func_get_args()和func_num_args()函数实现函数重载

这两个函数实现函数的重载!! 1.默认参数 从这个上面就可以看到,如果一个函数里面,对不是必须参数,添加相应的默认值,就可以完成相应的功能.  代码如下 复制代码   function overloadFun($param1, $param2 = '1',$param3 = true)   {    // do something   } 利用函数func_get_args()和call_user_func_array() PHP代码:  代码如下 复制代码 function rewrite()

ThinkPHP自动完成中使用函数与回调方法实例_php实例

本文实例讲述了ThinkPHP自动完成中使用函数与回调方法.分享给大家供大家参考.具体方法如下: ThinkPHP 自动填充格式如下: 复制代码 代码如下: array(填充字段,填充内容[,填充条件][,附加规则]) 附加规则,可选,包括: string:字符串,表示填充内容为字符串(默认). function:使用函数,表示填充的内容是一个函数返回值. callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值. field:字段,表示填充的内容是一个其他字段的值. Th

PHP基于数组实现的分页函数实例_php技巧

分页功能是PHP程序设计中非常常见的功能,不同于以往的,今天本文介绍的是PHP基于数组实现的分页函数. 关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要配合使用.两个函数通过全局变量$countpage发生联系,此变量用于跟踪总页码数. 具体实例代码如下: <?php /** * 数组分页函数 核心函数 array_slic

解析PHP留言本模块主要功能的函数说明(代码可实现)_php技巧

一,敏感词处理1,过滤敏感词preg_match()函数用来在字符串中搜索所有与给定的正则表达式匹配的内容,如果存在则返回True,否则返回False.语法:int preg_match(string pattern,string subject[,array matches[,int flags]])preg_match()函数参数说明如下:pattern:必要参数,需要匹配的正则表达式subject:必要参数,输入的字符串matches:可选参数.输出搜索结果的数组,例如$out[0]将包含

PHP常用函数和常见疑难问题解答_php技巧

首先介绍下比较简单但必不可少且实用的知识,可以当手册查询,适合像我一样的新手看. PHP常用库函数介绍 一.PHP字符串操作常用函数1.确定字符串长度 int strlen(string str)2.比较两个字符串a. strcmp函数对两个字符串进行二进制安全的比较,并区分大小写int strcmp(string str1,string str2)b. 以不区分大小写的方式比较两个字符串int strcasecmp(string str1,string str2) 3.求两个字符串相同部分in

PHP ignore_user_abort函数详细介绍和使用实例_php技巧

ignore_user_abort 设置与客户机断开是否会终止脚本的执行. 本函数返回 user-abort 设置的之前的值(一个布尔值). int ignore_user_abort ([ string $value ] )  参数setting描述:可选.如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行. 如果未设置该参数,会返回当前的设置. 注释:PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止.简单地使用 echo 语句无法确保信息发

HTML页面,测试JS对C函数的调用简单实例_javascript技巧

这里记一下,以后要用的时候可以查! <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio"> <meta http-equiv="content-type" content="text/html;charset=gbk"> <TITLE>HTML页面,测试JS对C函数的调用</

php中利用explode函数分割字符串到数组_php技巧

分割字符串 //利用 explode 函数分割字符串到数组 复制代码 代码如下: <?php $source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串 $hello = explode(',',$source); for($index=0;$index<count($hello);$index++) { echo $hello[$index];echo "</br>"; } ?>