为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去

该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数

function __call($func_name, $args)
{
echo "你所调用的函数:$func_name(参数:<br />";
var_dump($args);
echo ")不存在!";
}

  

可利用该函数实现伪重载

<?php
class a
{ function __call($name,$args)
{
if($name=="f")
{
switch(count($args))
{
case 0:$this->f0();break;//$this指当前类
case 1:$this->f1($args[0]);break;
case 2:$this->f2($args[0],$args[1]);break;
default:$this->err();break;
}
}
} function f0(){
echo "it's f0"; }
function f1($p1){
echo "it's f1";
echo $p1;
}
function f2($p1,$p2){
echo "it's f2";
echo $p1;
}
function err()
{
echo "函数不存在";
}
}
$a=new a();
$a->f(true,1);

  

最新文章

  1. unity3d 本地数据存储
  2. JVM是如何分配和回收内存?有实例!
  3. Java 集合深入理解(12):古老的 Vector
  4. 1564: [NOI2009]二叉查找树 - BZOJ
  5. 【重走Android之路】【番外篇】关于==和equals
  6. IT第二天 - JAVA环境的配置、Hello的编写
  7. android_重写button样式
  8. 状态转移的最短路 隐式图搜索 UVA 658
  9. 【批处理学习笔记】第十三课:常用dos命令(3)
  10. Spring3 MVC
  11. Zabbix 3.4.7针对一些主机设置期间维护
  12. python之jieba库
  13. [Swift]扩展String类:Base64的编码和解码
  14. Adas术语简称
  15. mysqldump数据导出问题和客户端授权后连接失败问题
  16. angularjs 动态表单, 原生事件中调用angular方法
  17. The Two Routes CodeForces - 601A(水最短路)
  18. WGS84转大地2000
  19. 介绍Visual Studio的Android模拟器
  20. 初探UE4中的Profiling【转】

热门文章

  1. SQLite事务与自增深度分析
  2. Java与算法之(13) - 二叉搜索树
  3. bzoj:1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
  4. [bzoj1594] [Usaco2008 Jan]猜数游戏
  5. 并查集-HDU1232-畅通工程
  6. hdu_1014(竟然真的还有更水的)
  7. android弹力效果菜单、组件化项目、电影票选座控件的源码
  8. Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
  9. python基础1 day2
  10. EC+VO+SCOPE for ES3