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中显示格式化的用户输入
Oct 09 PHP
一个odbc连mssql分页的类
Oct 09 PHP
用php来检测proxy
Oct 09 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
PHP的5个安全措施小结
Jul 17 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
php文件上传你必须知道的几点
Oct 20 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php插件Xajax使用方法详解
Aug 31 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输出Excel文件类
2010/02/08 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
优秀团员自我评价范文
2014/04/23 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
开天辟地观后感
2015/06/09 职场文书
2015年中秋节主持词
2015/07/30 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
Python使用openpyxl模块处理Excel文件
2022/06/05 Python
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers