PHP面向对象__call,__callstatic方法及应用笔记
/*
__call
__callstatic
*/
class Human {
private function eat(){
echo '快吃饭了!!<br />';
}
protected function hello(){
echo 'hello<br />';
}
public function say(){
echo '早上好!!<br />';
}
public function __call($a,$b){
echo '你在调用一个不存在或无权访问的方法',$a;
echo '而且还传了传了参';
var_dump($b);
}
static public function __callstatic($a,$b){
echo '你在调用一个不存在或无权访问的静态方法',$a;
echo '而且还传了传了参';
var_dump('参数为:',$b);
}
}
$jun=new Human();
$jun->hello('test',12111,'__call魔术方法,在protected里能否调用');
$jun->say();
$jun->a(11,1.111);
$jun->eat('测试__call在','private有权限调用没');
/*
__call 是调用不可见/不存在/无权限 的方法时,自动调用
$jun->a()--->不存在/无权限--->__call(){}魔术方法就自动调用了
*/
Human::ary(111,11);
/*
__callstatic 是调用不可见/不存在/无权限 的静态方法时,自动调用
Human::ary(111,11)--->不存在/无权限--->__callstatic(){}魔术方法就自动调用了
*/
echo '<hr />';
class action {
public function hn(){
echo 'hn天气';
}
public function __call($method,$bb){
echo $method,'天气';
}
}
$ac=new action();
$name=$_GET['name'];
if ($name) {
$ac->$name();
}
Dcr163的博客
http://dcr163.cn/35.html(转载时请注明本文出处及文章链接)