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 相关文章推荐
PHP开发过程中常用函数收藏
Dec 14 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP中is_dir()函数使用指南
May 08 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
详解php中反射的应用
Mar 15 PHP
PHP实现添加购物车功能
Mar 06 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 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
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python常见工厂函数用法示例
2018/03/21 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
浅谈Python爬虫基本套路
2019/03/25 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python imread、newaxis用法详解
2019/11/04 Python
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
警察群众路线整改措施
2014/09/26 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
python接口测试返回数据为字典取值方式
2022/02/12 Python