php 使用 __call实现重载功能示例

这篇文章主要介绍了php 使用 __call实现重载功能,结合实例形式分析了PHP使用__call实现重载的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了php 使用 __call实现重载功能,分享给大家供大家参考,具体如下:

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: funco
  5. * Date: 17-6-9
  6. * Time: 下午1:39
  7. */
  8. class MulStat
  9. {
  10. // showClass 可以接受0个参数
  11. private function showClass() {
  12. echo "this is class ".__CLASS__;
  13. }
  14. // showString 可以接受一个参数
  15. private function showString($str) {
  16. echo "string is ".$str;
  17. }
  18. // __call方法 可以获取实例化对象调用的成员函数名和向该被调函数传递的参数个数
  19. public function __call($name, $args) {
  20. // 先判断要调用的函数名$name
  21. if($name == "showInfo"){
  22. // 然后可以根据参数($args)数量判断调用哪个成员函数
  23. switch(count($args)) { // count可以计算数组元素个数
  24. case 0:
  25. $this->showClass();break;
  26. case 1:
  27. $this->showString($args[0]);break;
  28. }// switch
  29. }// if
  30. }
  31. }
  32. //实例化MulStat类
  33. $mulStat = new MulStat();
  34. echo "\$mulStat->showInfo(\"funco 小风\"):\n";
  35. $mulStat->showInfo("funco 小风");
  36. // 两次换行 便于观察结果
  37. echo "\n\n";
  38. echo "\$mulStat->showInfo():\n";
  39. $mulStat->showInfo();

运行结果:

$mulStat->showInfo("funco 小风"):

string is funco 小风

$mulStat->showInfo():

this is class MulStat