PHP函数重载的技巧实例

php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。

可以通过一些方法,间接实现函数重载。

1,可以使用func_get_args()和func_num_args()这两个函数实现函数的重载。
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]);
}
} www.jbxue.com
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");

PHP函数重载的技巧实例,布布扣,bubuko.com

时间: 2024-10-16 14:42:58

PHP函数重载的技巧实例的相关文章

[js高手之路]性能优化技巧 - 缓存与函数重载实战

所谓缓存,通俗点讲就是把已经做过的事情结果先暂时存起来,下次再做同样的事情,不用再重新去做,只要把之前的存的结果拿出来用即可,很明显大大提升了效率.他的应用场景非常广泛.如: 1.缓存ajax结果,大多数网站都会有产品推荐功能,比如按热销推荐,简单低效的做法,每次点击切换的时候,都要通过ajax去数据库中取出结果,其实他的结果并不是要实时去获取,完全可以用缓存技术保存起来,减少数据库处理压力 2.单例模式,也是缓存的应用 一.缓存原理与应用 我们先来一个的简单例子,比如,判断一个数是不是素数,普

0607pm克隆&amp;引用类&amp;加载类&amp;面向对象串讲&amp;函数重载

克隆class Ren{ public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this->sex=$s; } function __clone()//改变克隆的对象内容 { $this->name="李思思";//this代表复本对象 $that->name="李思思";//that代表原本的,后来废弃了 }}$r=new Ren("张丹

C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针

 目  录 1       开始学习C++.............................................................................................................. 4 1.1       C++的头文件.................................................................................................

函数重载的总结

函数重载: 出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数(overloaded function) 任何程序有且仅有一个main函数的实例,main函数不能重载. 函数重载和函数声明的区别: 如果两个函数声明的返回类型和形参表完全匹配,则将第二个声明视为第一个的重复声明.如果两个函数的形参表完全相同,但返回类型不同,则第二个声明是错误的.函数不能仅仅基于不同的返回类型而实现重载. 重载与作用域: 1 string init(); // the name init

php 之 类,对象(三)多态性,函数重载,克隆

一.三大特性之三 多态性(在php中表象不明显)1.概念:当父类引用指向子类实例时,由于子类对父类函数进行了重写,导致我们在使用该引用去调用相应的方法显示出的不同.2.发生条件:1.必须有继承 2. 子类必须要对父类的方法进行重写eg:class Ren { public $name; public $sex; function Say() { echo "Hello"; }}class China extends Ren{ function Say() { echo "你好

实验二:函数重载、模板、简单类的定义和实现

[实验结论] #函数重载 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型 数据,调用测试. #include<iostream> using namespace std; struct Complex { double real; double imaginary; }; //函数声明 int add(int a, int b); double add(double a,double b); Complex add(Comp

实验2:函数重载、函数模板、简单类的定义和实现

实验目的 1. 掌握c++中函数的声明.定义.调用和参数传递方式 2. 掌握c++中带有默认形参值的函数声明和定义方法 3. 理解函数重载,掌握c++中函数重载的实现方式 4. 理解函数模板,掌握c++中函数模板的简单使用 5. 理解面向对象的抽象和封装,掌握c++中类的定义.实现和使用方法 实验准备 1. 函数的声明.定义.调用.参数传递方法 2. 带有默认形参值的函数 3. 函数重载 4. 函数模板(9.1.1节 + 9.3节) 其中,9.3节,理解3个常用的排序算法和两个常用的查找算法 5

使用函数指针解决函数重载二义性调用问题

当实参对应重载函数的多个可行函数,且每个可行函数各自在一个实参上实现了更好的匹配时,编译器会因为程序具有二义性而报错. 例如: #include<iostream> using std::string; using std::cout; using std::cin; using std::endl; void ff(int, int) {//重载函数1 cout << "f1" << endl; } void ff(double, double =

javascript 函数重载 overloading

函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function overloading or method overloading is the ability to create multiple methods of the same name with different implementations. Calls to an overloaded functi