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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
Php注入点构造代码
Jun 14 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
浅析php数据类型转换
Jan 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP设计模式之工厂模式与单例模式
Sep 28 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
form自动提交实例讲解
Jul 10 PHP
php源码的安装方法和实例
Sep 26 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
详解PHP用mb_string处理windows中文字符
May 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
用php实现选择排序的解决方法
2013/05/04 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
accesskey 提交
2006/06/26 Javascript
JavaScript 指导方针
2007/04/05 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
javascript新闻跑马灯实例代码
2020/07/29 Javascript
js解决movebox移动问题
2016/03/29 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
python全栈开发语法总结
2020/11/22 Python
Python用户自定义异常的实现
2020/12/25 Python
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
成人继续教育实施方案
2014/03/01 职场文书
成都人事代理协议书
2014/10/25 职场文书
2014年文员工作总结
2014/11/18 职场文书
鸡毛信观后感
2015/06/11 职场文书
婚礼答谢词范文
2015/09/29 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技