PHP5 的重载根本就是一个伪操作符
来源:互联网 发布:倍投软件好用不 编辑:程序博客网 时间:2024/04/29 18:17
前几天读到PHP5的操作符重载,对此PHP提供一个函数__call($name,$arguments), 用来实现对同一函数,不同参数类型的重载。而且网上有一个简单的例子如下
class Caller
{
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this->foo_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_string($arguments[0]);
}
}
private function foo_int($x) {
echo 'foo is integer: ',$x;
}
private function foo_string($x) {
echo 'foo is string: ',$x;
}
}
$foo = new Caller();
$a = $foo->foo(3);
$b = $foo->foo("test");
乍一看上去这个例子似乎很不错。但是仔细看来,这个重载很容易就可以用普通的function实现了,根本不需要通过重载。这个重载函数根本就是一个伪操作。为了证明,我写例子如下,没有用到重载函数
class Caller2
{
function foo($arguments) {
if(is_int($arguments)){
$this->foo_int($arguments);
}elseif(is_string($arguments)){
$this->foo_string($arguments);
}else{
....
}
}
private function foo_int($x) {
echo 'foo is integer: ',$x;
}
private function foo_string($x) {
echo 'foo is string: ',$x;
}
}
$foo = new Caller2();
$a = $foo->foo(3);
$b = $foo->foo("test");
输出结果和上面根本是一样的,似乎也更易懂一些。所以,似乎也可以下结论,PHP的重载根本就是一个伪操作符,跟java,c#的重载完全不是一回事。
- PHP5 的重载根本就是一个伪操作符
- 操作符重载的一个例子
- C++重载操作符的一个疑问
- 操作符重载的一个案例
- PHP的伪重载
- PHP的伪重载
- PHP的伪重载
- 转换操作符以及重载&的一个例子
- Java中唯一一个重载过的操作符+
- c++重载io输入输出操作符的一个简单例子
- 操作符的重载
- 操作符的重载
- 操作符的重载
- 操作符的重载
- 操作符的重载
- 操作符的重载
- 所谓的“明清资本主义萌芽”根本就是无耻之说
- PHP5文件的操作
- C5TAT1-J
- sql面试题(1)
- Sql server 2000 & Sql server 2005 相互转换方法
- 请说出static和const关键字尽可能多的作用
- flash与javascript通讯问题
- PHP5 的重载根本就是一个伪操作符
- Nagios 探索之一 —— 基本平台的安装
- Nagios 探索之二 —— 插件的安装和使用
- Nagios 探索之三 —— 启动nagios服务
- Nagios 探索之四 —— 主机监控的配置
- 构造函数的简单使用
- Nagios 探索之五 —— 服务监控的配置
- Oracle Web ADI无法打开创建的EXCEL问题
- 三元表达式的使用