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中大括号作用介绍
Mar 22 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
thinkphp常见路径用法分析
Dec 02 PHP
php查询ip所在地的方法
Dec 05 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
PHP时间相关常用函数用法示例
Jun 03 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
PHP 递归效率分析
2009/11/24 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
js中function()使用方法
2013/12/24 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
django的model操作汇整详解
2019/07/26 Python
python多线程扫描端口(线程池)
2019/09/04 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
事务机电主管工作职责
2014/02/25 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
健康状况证明模板
2014/10/23 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
2015小学师德工作总结
2015/07/21 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
vue里使用create, mounted调用方法
2022/04/26 Vue.js
MySQL批量更新不同表中的数据
2022/05/11 MySQL