在程序开发中,如果在使用对象调用对象内部方法时候,调用的这个方法不存在那么程序就会出错,然后程序退出不能继续执行。那么可不可以在程序调用对象内部 不存在的方法时,提示我们调用的方法及使用的参数不存在,但程序还可以继续执行,这个时候我们就要使用在调用不存在的方法时自动调用的方 法“__call()”。

<?php
// 这是一个测试的类,里面没有属性和方法
class Test {
}// 产生一个Test类的对象
$test = new Test();// 调用对象里不存在的方法
$test->demo("one", "two", "three");// 程序不会执行到这里
echo "this is a test<br>";
?>

上例出现如下错误,程序通出不能继续执行;

Fatal error: Call to undefined method Test::demo()

下面我们加上“__call()”方法,这个方法有2个参数,第一个参数为调用不存在的方法过程中,自动调用__call()方法时,把这个不存在的方法的方法名传给第一个参数,第二个参数则是把这个方法的多个参数以数组的形式传进来

<?php
// 这是一个测试的类,里面没有属性和方法
class Test {// 调用不存的方法时自动调用的方法,第一个参数为方法名,第二个参数是数组参数function __call($function_name, $args) {print "你所调用的函数:$function_name(参数:";print_r($args);echo ")不存在!<br>";}
}// 产生一个Test类的对象
$test = new Test();// 调用对象里不存在的方法
$test->demo("one", "two", "three");// 程序不会退出可以执行到这里
echo "this is a test<br>";
?>

上例输出结果为:

你所调用的函数: demo(参数:Array ( [0] => one [1] => two [2] => three ) )不存在!
this is a test

【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误相关推荐

  1. 【转载】PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持. 如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们 ...

  2. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  3. php面向对象编程调用结果,【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误...

    在程序开发中,如果在使用对象调用对象内部方法时候,调用的这个方法不存在那么程序就会出错,然后程序退出不能继续执行.那么可不可以在程序调用对象内部 不存在的方法时,提示我们调用的方法及使用的参数不存在, ...

  4. 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用...

    一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是, 对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数"__get()"和"__ ...

  5. PHP面向对象(OOP)编程完全教程:1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

  6. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建

    1. Kali linux是BT5的晋级版本,用于信息安全.基于Debian7内核.新建虚拟机. 2. 选择默认虚拟机 3. 选择稍后安装操作系统 4.选择Linux Debian7 64位,因为Ka ...

  7. python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版

    Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...

  8. python快速编程入门教程-终于懂得python快速编程入门教程

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  9. socket 编程入门教程(三)TCP原理:5、TCP的三次握手(three-way handshake)

    socket 编程入门教程(三)TCP原理:5.TCP的三次握手(three-way handshake) 前面3个小节介绍了socket机制对TCP协议三次握手的实现,需要强调的是,与协议独立于实现 ...

最新文章

  1. ubuntu18.04上安装ffmpeg
  2. [蘑菇街] 搜索、算法团队招募牛人啦-年底了走过路过不要错过 - V2EX
  3. java自动生成数据库代码
  4. 基于matlab的dsp调试方法,基于Matlab7.0的DSP调试
  5. h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析
  6. java 编译 器 ide_Java 8发布一年后,IDE和编译器尚未完全就绪
  7. recovery模式下支持ADB连接和串口操作
  8. 【日志】调频调占空比电路的设计
  9. C++语言类的多态介绍和示例
  10. 计算机98k音乐,【土豆】handclap 98K 完整版
  11. poj 2153 Rank List
  12. gridview绑定数据mysql_【gridview控件】怎么绑定数据库并显示?
  13. hadoop之安全模式,HDFS的读取,写入
  14. python股票回测_用Python徒手撸一个股票回测框架
  15. 仙人掌树学习1:仙人掌图 洛谷:[SHOI2008]仙人掌图 II
  16. 深度链接、延迟深度链接、App Links以及关于LinkedME实现深度链接的原理解析
  17. java中between and什么意思,关于 oracle between and的用法!
  18. Ipconfig ping tracert netstat arp的使用
  19. 显示器竖屏显示会字体发虚的解决方法
  20. 谷歌浏览器的开源代码(M84版本)

热门文章

  1. 亲密关系-【舒适退出】-减少伤害的终局沟通
  2. “支付功能”怎么测试?
  3. 不是一流大学毕业,却通过自学软件测试,进了阿里年薪初始22K
  4. 怎么样把c语言和单片机融合,求助怎么把两个单片机c语言程序结合在一起?大一期末实验...
  5. blob字段如何更新_Axure RP8 中继器:字段增删改
  6. linux启动中继服务器失败,Tor中继服务器在Linux里安装配置的流程
  7. surface simplification using quadratic error metrics
  8. 基于高光谱技术的农作物常见病害监测研究
  9. 【原始图像】对数及对比度扩展变换
  10. python爬取个人信息_Python爬取个人支付宝朋友信息操作示例