PHP中如何通过__call方法实现函数重载示例?

更新于
2026-07-26 20:43:48
20阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计469个文字,预计阅读时间需要2分钟。

本例展示了如何使用PHP的`__call`方法实现方法的重载功能。以下是一个简单的示例:

phpclass MulStat{ // showClass 可以接收0个参数或1个参数 p /** * Created by PhpStorm. * User: funco * Date: 17-6-9 * Time: 下午1:39 */ public function __call($name, $arguments) { // 检查方法名称是否以 show 开头 if (strpos($name, 'show')===0) { // 处理参数 $params=[]; if (count($arguments) > 0) { $params[]=$arguments[0]; } // 输出结果 echo 调用方法: . $name . ( . implode(, , $params) . )\n; } else { // 如果不是重载方法,则抛出错误 throw new Exception(方法不存在: . $name); } }}

// 测试$mulStat=new MulStat();$mulStat->showClass(); // 输出: 调用方法: showClass()$mulStat->showClass(1); // 输出: 调用方法: showClass(1)

本文实例讲述了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程序设计有所帮助。

本文共计469个文字,预计阅读时间需要2分钟。

本例展示了如何使用PHP的`__call`方法实现方法的重载功能。以下是一个简单的示例:

phpclass MulStat{ // showClass 可以接收0个参数或1个参数 p /** * Created by PhpStorm. * User: funco * Date: 17-6-9 * Time: 下午1:39 */ public function __call($name, $arguments) { // 检查方法名称是否以 show 开头 if (strpos($name, 'show')===0) { // 处理参数 $params=[]; if (count($arguments) > 0) { $params[]=$arguments[0]; } // 输出结果 echo 调用方法: . $name . ( . implode(, , $params) . )\n; } else { // 如果不是重载方法,则抛出错误 throw new Exception(方法不存在: . $name); } }}

// 测试$mulStat=new MulStat();$mulStat->showClass(); // 输出: 调用方法: showClass()$mulStat->showClass(1); // 输出: 调用方法: showClass(1)

本文实例讲述了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程序设计有所帮助。