本文实例讲述了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数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:- 解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
- PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
- PHP面相对象中的重载与重写
- PHP中子类重载父类的方法【parent::方法名】
- PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
- php函数重载的替代方法--伪重载详解
- php继承中方法重载(覆盖)的应用场合
- PHP使用方法重载实现动态创建属性的get和set方法
- PHP利用func_get_args和func_num_args函数实现函数重载实例
- php面向对象全攻略 (八)重载新的方法
- php面向对象的方法重载两种版本比较
- PHP重载基础知识回顾