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初学者头疼问题总结
Jul 08 PHP
PHP入门速成(2)
Oct 09 PHP
在PHP中使用Sockets 从Usenet中获取文件
Jan 10 PHP
PHP 截取字符串专题集合
Aug 19 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
windows下apache搭建php开发环境
Aug 27 PHP
PHP加密技术的简单实现
Sep 04 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
PHP反射基础知识回顾
Sep 10 PHP
php的单例模式及应用场景详解
Feb 27 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
解析PHP实现下载文件的两种方法
2013/07/05 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php简单压缩css样式示例
2016/09/22 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
python实现xlsx文件分析详解
2018/01/02 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
机电职业生涯规划书范文
2014/03/08 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
平安家庭事迹材料
2014/12/20 职场文书
化验室岗位职责
2015/02/14 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
2015年女职工工作总结
2015/05/15 职场文书