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

5年以前  |  阅读数:535 次  |  编程语言: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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例