首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象通过__call( )方法处理错误调用
作者:小萝卜 2019-09-03 【 PHP 面向对象 】 浏览 1192
简介当试图调用一个对象中不存在的方法时,就会产生错误。PHP提供了“__call()”这个方法来处理这种情况。即当调用一个不可访问方法(如未定义,或者不可见)时,__call()会被调用。
PHP面向对象通过__call( )方法处理错误调用
当试图调用一个对象中不存在的方法时,就会产生错误。PHP提供了“__call()”这个方法来处理这种情况。即当调用一个不可访问方法(如未定义,或者不可见)时,__call()会被调用。
格式:
mixed __call( string $name , array $arguments )
第一个参数$name表示方法名,
第二参数$arguments表示调用时的参数列表(数组类型)
实例1:
<?php
//声明一个测试类,在类中声明printHello()和__call()方法
class TestClass {
public function printHello() { //声明一个方法,可以让对象能成功调用
echo "Hello<br>"; //执行时输出一条语句
}
/**
声明魔术方法__call(),用来处理调用对象中不存在的方法
@param string $functionName 访问不存的成员方法名称字符串
@param array $args 访问不存的成员方法中传递的参数数组
*/
public function __call($functionName, $args) {
echo "你所调用的函数:".$functionName."(参数:"; //输出调用不存在的方法名
print_r($args); //输出调用不存在的方法时的参数列表
echo ")不存在!<br>\n"; //输出附加的一些提示信息
}
}
$obj = new TestClass(); //通过类TestClass实例化一个对象
$obj -> myFun("one", 2, "three"); //调用对象中不存在方法,则自动调用了对象中__call()方法
$obj -> otherFun(8,9); //调用对象中不存在的方法,则自动调用了对象中__call()方法
$obj -> printHello(); //调用对象中存在的方法,可以成功调用
实例2:
<?php
//魔术方法__call()的使用
class Demo{
public function fun1(){
echo "fun1()....<br/>";
}
public function fun2(){
echo "fun2()....<br/>";
}
//魔术方法
public function __call($method,$params){
//echo "aaaa";
echo "你调用的方法{$method}不存在!<br/>";
echo "参数:";
print_r($params);
}
}
//测试
$demo = new Demo();
$demo->fun1();
$demo->fun2();
//当调用一个不存在的方法时,会先尝试调用当前对象中的魔术方法__call()
$demo->fun3(10,20);
很赞哦! (0)
上一篇:php面向对象之自动加载类