第十一重装11
拥挤的交通可以通过一些特殊的方法如__get,__set做,和__call。当Zend引擎试图访问一个成员未能找到它,PHP将调用这些方法。
在例6.14中,__get和__set替换属性变量数组的所有访问。如果有必要,您可以实现任何类型的过滤。例如,脚本可以禁止设置属性值,并从一些前缀开始,或者包含某种类型的值。
的__call方法向你展示了如何调用未定义的方法。当你调用未定义的方法,这方法接收将被传递到__call方法名称的参数,并通过PHP __call值返回到未定义的方法。
清单6.14用户级重载
类的重载
{
私有$ =数组();
功能__get($ property_name)
{
如果(isset(美元->性能{ $ property_name }))
{
收益(美元->性能{ $ property_name });
}
其他的
{
返回(null);
}
}
功能__set(property_name美元,美元的价值)
{
美元->性能{ $ property_name } =价值;
}
功能__call(function_name美元,一美元)
{
打印(调用function_name美元()
;
打印(参数:);
print_r(合一);
返回(true);
}
}
$ O =新的重载();
/ /调用__set()分配一个属性变量不存在,__set(激活)
$ O -> dynaprop =动态内容;
/ /调用__get激活__get()()
打印($ O -> dynaprop。
;
/ /调用__call激活__call()()
$ O -> dynamethod(列昂
>