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的SQL注入实现(测试代码安全不错)
Feb 27 PHP
PHP新手入门学习方法
May 08 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP微商城开源代码实例
Mar 27 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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怎样调用MSSQL的存储过程
2006/10/09 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
php session处理的定制
2009/03/16 PHP
php引用传值实例详解学习
2013/11/06 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python Trie树实现字典排序
2014/03/28 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
教师绩效考核方案
2014/01/21 职场文书
经典公益广告词
2014/03/13 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android