博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 中的魔术方法——方法重载
阅读量:4356 次
发布时间:2019-06-07

本文共 1599 字,大约阅读时间需要 5 分钟。

方法重载

 __call()当对一个对象未定义的实例方法进行调用(访问)的时候,会自动调用预先定义好的魔术方法:__call()

 

   __callstatic()当对一个类未定义的静态方法进行调用(访问)的时候,会自动调用预先定义好的静态魔术方法:__callstatic()

 

Demo:

 

1  class Test{ 2         function f(){ 3             echo "
在"; 4 } 5 6 //需要两个参数 7 //$fun_name:不存在的方法名 8 //$fun_arg:调用该不存在的方法时的所有实参--它是一个数组 9 function __call($fun_name,$fun_arg){10 //echo "
调用不存在的普通实例方法";11 $count = count($fun_arg);12 if($fun_name == "do"){13 if($count == 1){14 $this->pa($fun_arg[0]);15 }elseif($count == 3){16 $this->papa($fun_arg[0],$fun_arg[1],$fun_arg[2]);17 }else{18 echo "
MM:不要对我使用套路";19 }20 21 }else{22 echo "
请勿打扰";23 }24 }25 function pa($pa){26 echo "
GG:{
$pa}";27 echo "
MM:叔叔,我们不约";28 }29 function papa($pa1,$pa2,$pa3){30 echo "
MM:泡妞七字真言";31 echo "
GG:{
$pa1}{
$pa2}{
$pa3}";32 }33 34 static function __callstatic($fun_name,$fun_arg){35 if($fun_name == "staticdo"){36 self::staticpa();37 }38 }39 static function staticpa(){40 echo "
MM:gun~";41 }42 }43 $t = new Test();44 $t->f(); //调用存在的方法45 $t->f2(); //调用不存在的方法46 $t->do("约吗");47 $t->do("吃饭","看电影");48 $t->do("胆大","心细","脸皮厚");49 Test::staticdo();
View Code

 

转载于:https://www.cnblogs.com/godLike7/p/6808850.html

你可能感兴趣的文章
Qt之QHeaderView自定义排序(终极版)
查看>>
python----logging
查看>>
LBP特征 学习笔记
查看>>
与TIME_WAIT相关的几个内核参数修改测试讨论结论
查看>>
webpack构建react应用三:使用webpack Loaders 模块加载器(一)
查看>>
Java JDBC
查看>>
走势终完美 --执子之手
查看>>
补全左括号
查看>>
javascript中关于坐标 大小 的描述
查看>>
8086CPU各寄存器的用途
查看>>
AngularJs中,如何在render完成之后,执行Js脚本
查看>>
Nginx 防盗链
查看>>
如何讓Android系統顯示CJK擴展區漢字
查看>>
Android 下拉选择绑定Value和Text值
查看>>
HTML+CSS小结
查看>>
Android防止按钮连续点击
查看>>
ElasticSearch Mapping中的字段类型
查看>>
数据库中主键和外键的设计原则
查看>>
怎样理解阻塞非阻塞与同步异步的区别?
查看>>
Xcode 警告信息处理:Format string is not a string literal (potentially insecure)
查看>>