Table des matières
php利用func_get_arg,func_get_args,func_num_args实现伪重载
您可能感兴趣的文章
Maison développement back-end tutoriel php php利用func_get_arg,func_get_args,func_num_args实现伪重载_PHP教程

php利用func_get_arg,func_get_args,func_num_args实现伪重载_PHP教程

Jul 13, 2016 am 10:14 AM
php

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 ;
	}
}
Copier après la connexion

您可能感兴趣的文章

  • php利用session_set_save_handler()函数将session保存到MySQL数据库中
  • PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
  • 关于使用in_array() foreach array_search() 查找数组是否包含时的性能对比
  • php利用array_flip实现数组键值交换去除数组重复值
  • php利用filter函数验证邮箱、url和ip地址的方法
  • PHP中file_get_contents于curl性能效率比较
  • 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
  • php在数组中查找某个值是否存在(in_array(),array_search(),array_key_exists())

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/910766.htmlTechArticlephp利用func_get_arg,func_get_args,func_num_args实现伪重载 偶尔在网上看到关于php的伪重载的问题,有点兴趣便研究了一下。下面作者将说说php如何...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

See all articles