PHP5学习笔记:用__call()实现方法重载
2011-09-22 13:57
218 查看
今天在网上发现了一片好文章,介绍_call()方法。
依靠这个方法可以实现方法重载,这是找了好久的东西了。
发在这里,算作笔记。
---------------------------------------
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
例七:__call
<?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I'm $name!");
}
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。
例八:使用 __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(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
例七:__call
<?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I'm $name!");
}
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。
例八:使用 __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()实现方法重载
- PHP5学习笔记:用__call()实现方法重载
- Dynamic CRM 2013学习笔记(二十)字段改变事件的二种实现方法
- 『iOS学习笔记』 - 变量 属性 方法 实现
- 线性表的两种实现方法-数据结构学习笔记2.1
- php用魔术方法__call实现类函数重载
- 三种方法实现网页下载-(慕课网学习笔记)
- Javascript中的重载的实现以及方法apply和call
- Java基础_方法&Constructor的重载——学习笔记
- Java学习笔记十二:Java中方法的重载
- PHP学习笔记【15】--全局变量,静态变量,静态方法,php方法重载
- Java中实现深拷贝的方法—学习笔记
- 转:Java学习笔记之方法重载,动态方法调度和抽象类
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- Objective-C学习笔记---类别(实现多重继承的方法)
- Java学习笔记(1):重载方法
- 用__call()实现方法重载
- __call 实现函数方法不同参数个数的重载
- 黑马程序员 - 学习笔记1 重载方法
- PHP学习笔记【15】--全局变量,静态变量,静态方法,php方法重载