有的时候,能够调用可变参数的同一个方法会非常方便。PHP能够定义带默认值的可选参数使这一做法成为可能。品牌网站建设:http://www.ucantech.com/
可以在php5中用__call()实现这种方法重载。下面来看一个示例。假设要用重载行为,那么要将其放到抽象父类中。
Php代码
abstract class OverloadableObject{
function __call($name, $args){
$method = $name."_".count($args);
if(!method_exists($this,$method)){
throw new Exception("Call to undefined method".get_class($this)."::$method");
}
return call_user_func_array(array($this,$method),$args);
}
}
这个类方法的主要行为都在
Php代码
$method = $name."_".count($args);
显示一行代码中定义了。如果调用未定义方法,__call()方法会生成一个新方法,其名称由原始方法和参数个数构成,用下划线分开。然后用新生成的方法名调用改方法,将原来的参数也一起传递过去。
现在,如果要使用一个名为multiply的重载方法,可以使用两个或三个参数来调用它,并在每种情况下进行相应操作,可以分别用两个方法:multiply_2和multiply_3
Php代码
class Multiplier extends OverloadableObject{
function multiply_2($one,$two){
return $one*$two;
}
function multiply_3($one,$two,$three){
return $one*$two*$three;
}
}
为了使用这段代码,只调用带有两个或三个参数的multiply方法。
$multi = new Multiplier;
echo $multi->multiply(5,6)."\n";
echo $multi->multiply(5,6,7)."\n"; (fblww-0112)
分享到:
相关推荐
JAVA不支持操作符的重载(但是“+”实际上是一种操作符重载)。 复制代码 代码如下: <?php Class Father { public function fmeth1() { echo “fmeth1()… ”; } //public function fmeth1($str1) { // echo ...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
b、Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 c
在一般的面向对象设计语言(如C++,Java)中的方法重载就是定义相同的方法名,通过“参数的个数”不同或“参数的类型”不同,来访问我们的相同方法名的不同方法。但是PHP 中,方法是不能重载的,因为PHP 是弱类型的...
java8集合源码j2php Java 到 PHP 的编译器 此转编译器不会尝试模拟 JVM,但会产生接近原始 Java 源代码的人类友好输出(与基于 LLVM 的解决方案不同)。 它支持高达 Java 9 的任何 Java 版本作为源代码,并生成 PHP ...
本文实例讲述了PHP实现重载的常用方法。分享给大家供大家参考,具体如下: php是弱类型语言,并没有像JAVA这种...先举一个JAVA重载的例子: class demo { public static void main (String[] args) { sum(1,1);//2
学习php的朋友都知道php本身是没有函数重载这一说的,更没说像java,c那样使用方法,但如果我们深入了解一下会发现可以在php中使用func_get_args()和func_num_args()函数实现函数重载,下面来举两个函数重载例子....
php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可以通过一些方法,间接的实现重载。
受 Java 启发的 PHP OOP 核心 来源 贡献 分叉和克隆 composer install vendor/bin/phpunit --debug 贡献 拉取请求 进步 郎 对象(Alpha 就绪) 字符串(Alpha 就绪) AbstractStringBuilder(Alpha 就绪) ...
2022 年全新新最火盲盒商城完整版源码,可运营对接了免签支付接口。测试了一下还不错,有兴趣的可以自行下载研究。 搭建环境 Linux7.6-Nginx 1.18.0、PHP-7.2...PHP7.2 删除所有禁用函数,之后重载配置并重启 PHP7.2。
从字面上理解,多态的意思是“多种形态”,简单来说,多态是具有表现多种形态的能力的特征,在OO中是指“语言具有根据对象的类型以不同方式处理之,特别是重载方法和继承类这种形式”的能力。多态被认为是面向对象...
override(重写,覆盖) 1、方法名、参数、返回值相同...方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。 重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态
它描述了可用的内置基本类型,函数/类和接口,以及运算符重载,隐式和显式强制转换等使用了核心组件。 请访问该以获取有关该项目的更多信息。 使用项目的(JIRA)报告错误或提交功能请求。 版权所有2014 Robert ...
这货是从 Martin 大神的《企业应用架构模式》中学到的,辅助 PHP 动态语言的特性,可以比 Java 轻松很多的实现延迟加载(LazyLoad)。基本原理是通过一个虚代理(Virtual Proxy)做占位符,一旦访问代理对象的某成员...
该语言具有类型安全、类、继承、运算符重载、lambda 函数、泛型特征、类扩展、类型推断,并且可以使用系统类与主机系统 API 集成。 主机平台和目标语言 编译器是自托管的,这意味着它是使用编译器本身编写的,因此它...