__call PHP伪重载方法
2024-08-20 03:15:16
为了避免当调用的方法不存在时产生错误,可以使用 __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);
最新文章
- unity3d 本地数据存储
- JVM是如何分配和回收内存?有实例!
- Java 集合深入理解(12):古老的 Vector
- 1564: [NOI2009]二叉查找树 - BZOJ
- 【重走Android之路】【番外篇】关于==和equals
- IT第二天 - JAVA环境的配置、Hello的编写
- android_重写button样式
- 状态转移的最短路 隐式图搜索 UVA 658
- 【批处理学习笔记】第十三课:常用dos命令(3)
- Spring3 MVC
- Zabbix 3.4.7针对一些主机设置期间维护
- python之jieba库
- [Swift]扩展String类:Base64的编码和解码
- Adas术语简称
- mysqldump数据导出问题和客户端授权后连接失败问题
- angularjs 动态表单, 原生事件中调用angular方法
- The Two Routes CodeForces - 601A(水最短路)
- WGS84转大地2000
- 介绍Visual Studio的Android模拟器
- 初探UE4中的Profiling【转】
热门文章
- SQLite事务与自增深度分析
- Java与算法之(13) - 二叉搜索树
- bzoj:1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
- [bzoj1594] [Usaco2008 Jan]猜数游戏
- 并查集-HDU1232-畅通工程
- hdu_1014(竟然真的还有更水的)
- android弹力效果菜单、组件化项目、电影票选座控件的源码
- Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
- python基础1 day2
- EC+VO+SCOPE for ES3