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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
php生成rss类用法实例
Apr 14 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
php比较两个字符串长度的方法
Jul 13 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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
长波有什么东西
2021/03/01 无线电
晶体管单管来复再生式收音机
2021/03/02 无线电
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
第八节 访问方式 [8]
2006/10/09 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
jstree的简单实例
2016/12/01 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
python实现周期方波信号频谱图
2018/07/21 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
火山动力Java笔试题
2014/06/26 面试题
车间班长岗位职责
2013/11/30 职场文书
2014年关工委工作总结
2014/11/17 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
详解Flask开发技巧之异常处理
2021/06/15 Python
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android