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+mysql一个名片库程序
Oct 09 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
ThinkPHP安装和设置
Jul 27 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
Zend Framework分发器用法示例
Dec 11 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
PHP中关于php.ini参数优化详解
Feb 28 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
windows xp下安装pear
2006/12/02 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php图片添加水印例子
2016/07/20 PHP
laravel自定义分页效果
2017/07/23 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Python urlopen 使用小示例
2008/09/06 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
Python 探针的实现原理
2016/04/23 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
django-filter和普通查询的例子
2019/08/12 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
营业经理岗位职责
2013/11/10 职场文书
技术比武方案
2014/05/19 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
2016高考感言
2015/08/01 职场文书
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers