php利用func_get_arg,func_get_args,func_num_args实现伪重载
偶尔在网上看到关于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 却可以直接解决相关问题。具体举个示例代码如下:
<?php 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 ('<br>'); test(1); echo ('<br>'); test(1, 2); echo ('<br>'); 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性能效率比较

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Huawei is rolling out software version 5.0.0.100(C00M01) for the Watch GT 5 and the Watch GT 5 Prosmartwatchesglobally. These two smartwatches recently launched in Europe, with the standard model arriving as the company’s cheapest model. This Harmony

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Xiaomi will shortly launch the Mijia Graphene Oil Heater in China. The company recently ran a successful crowdfunding campaign for the smart home product, hosted on its Youpin platform. According to the page, the device has already started to ship to

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

CMS stands for Content Management System. It is a software application or platform that enables users to create, manage, and modify digital content without requiring advanced technical knowledge. CMS allows users to easily create and organize content
