php5中的overloading始终没有什么惊喜,实现起来居然十分曲折的,这点还是比不上java哦
,其中是通过_call来实现的,这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
比如
,其中是通过_call来实现的,这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
比如
<?php
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
}
} private function foo_for_int($x) {
print("oh an int!");
} private function foo_for_string($x) {
print("oh a string!");
}
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>
你看多不好呀,还要手工去判断参数的类型
本文探讨了PHP5中的过载机制实现,并通过一个具体的示例展示了如何使用__call方法来处理未定义的方法调用。文章指出这种方法相较于Java来说显得不够优雅。
1392

被折叠的 条评论
为什么被折叠?



