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注入漏洞攻击建议分享
Mar 01 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
php简单socket服务器客户端代码实例
May 18 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 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 autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
详解PHP中的Traits
2015/07/29 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
javascript数组详解
2014/10/22 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
loading动画特效小结
2017/01/22 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
Python实现字典依据value排序
2016/02/24 Python
python中range()与xrange()用法分析
2016/09/21 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
政风行风整改方案
2014/10/25 职场文书
优秀教师单行材料
2014/12/16 职场文书
500字小学生检讨书
2015/02/19 职场文书
预备党员入党感言
2015/08/01 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android