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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
php多文件打包下载的实例代码
Jul 12 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 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和MySql来与ODBC数据连接
2006/10/09 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
JS 常用校验函数
2009/03/26 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python字典的遍历3种方法详解
2019/08/10 Python
python hash每次调用结果不同的原因
2019/11/21 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
Python如何读取、写入JSON数据
2020/07/28 Python
家长会邀请书
2014/01/25 职场文书
致裁判员加油稿
2014/02/08 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
信访工作汇报材料
2014/10/27 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS