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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
把PHP安装为Apache DSO
Oct 09 PHP
PHP生成静态页
Nov 25 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
分享php邮件管理器源码
Jan 06 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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 缓存实现代码及详细注释
2010/05/16 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
快速入门python学习笔记
2017/12/06 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
python实现图书借阅系统
2019/02/20 Python
python简单区块链模拟详解
2019/07/03 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
Python netmiko模块的使用
2020/02/14 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
生物科学专业自荐书
2014/06/20 职场文书
公民授权委托书
2014/10/15 职场文书
小学生通知书评语
2014/12/31 职场文书
运动会报道稿大全
2015/07/23 职场文书
python实现剪贴板的操作
2021/07/01 Python
你知道Java Spring的两种事务吗
2022/03/16 Java/Android