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的开发框架的现状和展望
Mar 16 PHP
PHP批量生成缩略图的代码
Jul 19 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
php cli配置文件问题分析
Oct 15 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
实例讲解PHP表单验证功能
Feb 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
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
Laravel find in set排序实例
2019/10/09 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js实现简单的倒计时
2021/01/28 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
numpy.random模块用法总结
2019/05/27 Python
python线程的几种创建方式详解
2019/08/29 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
转让协议书范本
2014/09/13 职场文书
基层党支部整改方案
2014/10/25 职场文书
文员岗位职责
2015/02/04 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
MySQL优化及索引解析
2022/03/17 MySQL
CSS的calc函数用法小结
2022/06/25 HTML / CSS