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


Posted in PHP onNovember 18, 2019

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

<?php
/**
 * Created by PhpStorm.
 * User: funco
 * Date: 17-6-9
 * Time: 下午1:39
 */
class MulStat
{
  // showClass 可以接受0个参数
  private function showClass() {
    echo "this is class ".__CLASS__;
  }

  // showString 可以接受一个参数
  private function showString($str) {
    echo "string is ".$str;
  }

  // __call方法 可以获取实例化对象调用的成员函数名和向该被调函数传递的参数个数
  public function __call($name, $args) {
    // 先判断要调用的函数名$name
    if($name == "showInfo"){
      // 然后可以根据参数($args)数量判断调用哪个成员函数
      switch(count($args)) {           // count可以计算数组元素个数
        case 0:
          $this->showClass();break;
        case 1:
          $this->showString($args[0]);break;
      }// switch
    }// if
  }
}

//实例化MulStat类
$mulStat = new MulStat();

echo "\$mulStat->showInfo(\"funco 小风\"):\n";
$mulStat->showInfo("funco 小风");

// 两次换行 便于观察结果
echo "\n\n";

echo "\$mulStat->showInfo():\n";
$mulStat->showInfo();

运行结果:

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

$mulStat->showInfo():
this is class MulStat

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
php学习笔记之面向对象编程
Dec 29 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php实现图片缩放功能类
Dec 18 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
php递归函数怎么用才有效
Feb 24 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
laravel-admin的图片删除实例
Sep 30 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 #PHP
php 多继承的几种常见实现方法示例
Nov 18 #PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 #PHP
PHP cookie与session会话基本用法实例分析
Nov 18 #PHP
php pdo连接数据库操作示例
Nov 18 #PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 #PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 #PHP
You might like
基于php伪静态的实现详细介绍
2013/04/28 PHP
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
12条写出高质量JS代码的方法
2018/01/07 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
动态创建类实例代码
2009/10/07 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Python 串口通信的实现
2020/09/29 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
请假条的格式
2014/04/11 职场文书
机电专业求职信
2014/06/14 职场文书
消防宣传口号
2014/06/16 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
复试通知单模板
2015/04/24 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
信息技术国培研修日志
2015/11/13 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
浅析Django接口版本控制
2021/06/26 Python
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript