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中几种常见安全设置详解
Apr 06 PHP
PHP 文件缓存的性能测试
Apr 25 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
php生成HTML文件的类方法
Oct 11 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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 超链接 抓取实现代码
2009/06/29 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
js 操作符实例代码
2009/10/24 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
Javascript验证方法大全
2015/09/21 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
彻底理解Python list切片原理
2017/10/27 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Python threading的使用方法解析
2019/08/28 Python
使用Python实现批量ping操作方法
2020/05/06 Python
聊聊python中的异常嵌套
2020/09/01 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
联想台湾官网:Lenovo TW
2018/05/09 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
公司联欢晚会主持词
2014/03/22 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
纪检监察立案决定书
2015/06/24 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android