php利用func_get_arg,func_get_args,func_num_args实现伪重载
程序员文章站
2022-05-07 14:54:32
...
偶尔在网上看到关于php的伪重载的问题,有点兴趣便研究了一下。下面作者将说说php如何利用func_get_arg,func_get_args,func_num_args实现函数的伪重载问题。
首先说说方法重载的好处:
实现方法重载可以不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。
但是在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数来解决相关问题,而php提供了几个函数,比如:func_get_arg,func_get_args,func_num_args 却可以直接解决相关问题。具体举个示例代码如下:
'); 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利用session_set_save_handler()函数将session保存到MySQL数据库中
- PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
- php利用array_flip实现数组键值交换去除数组重复值
- 关于使用in_array() foreach array_search() 查找数组是否包含时的性能对比
- php利用filter函数验证邮箱、url和ip地址的方法
- 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
- php在数组中查找某个值是否存在(in_array(),array_search(),array_key_exists())
- PHP中file_get_contents于curl性能效率比较
推荐阅读
-
PHP利用func_get_args和func_num_args函数实现函数重载实例
-
PHP利用func_get_args和func_num_args函数实现函数重载实例,funcnumargs_PHP教程
-
PHP利用func_get_args和func_num_args函数实现函数重载实例,funcnumargs
-
PHP利用func_get_args和func_num_args函数实现函数重载实例
-
PHP利用func_get_args和func_num_args函数实现函数重载实例
-
php利用func_get_arg,func_get_args,func_num_args实现伪重载
-
PHP利用func_get_args和func_num_args函数实现函数重载实例
-
php利用func_get_arg,func_get_args,func_num_args实现伪重载_PHP教程
-
PHP利用func_get_args和func_num_args函数实现函数重载实例_PHP
-
PHP利用func_get_args和func_num_args函数实现函数重载实例_php技巧