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下MAIL的另一解决方案
Oct 09 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
PHP反射学习入门示例
Jun 14 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文件缓存内容保存格式实例分析
2014/08/20 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
PHP 文件上传限制问题
2019/09/01 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
javascript prototype,executing,context,closure
2008/12/24 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
20个常用Python运维库和模块
2018/02/12 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python3.5安装python3-tk详解
2019/04/26 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python 字符串池化的前提
2020/07/03 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
利用python 下载bilibili视频
2020/11/13 Python
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
《我的信念》教学反思
2014/02/15 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书