当前位置: 首页 > 编程笔记 >

什么是PHP中的方法重载?

赫连骏
2023-03-14
本文向大家介绍什么是PHP中的方法重载?,包括了什么是PHP中的方法重载?的使用技巧和注意事项,需要的朋友参考一下

方法重载是面向对象编程的概念,它有助于轻松地构建复合应用程序。函数重载或方法重载是一项功能,它允许创建多个名称相似的方法,这些方法在其作为参数接受的输入参数的类型上彼此不同。

上面的概念对于其他编程语言来说很好,它被称为静态多态,即方法重载。

示例

让我们通过一个例子来理解。

<?php
   class machine {
      function doTask($var1){
         return $var1;
      }
      function doTask($var1,$var2){
         return $var1 * $var1 ;
      }
   }
   $task1 = new machine();
   $task1->doTask(5,10);
?>

输出:

Error

说明:

这将产生错误,因为php会说您已两次声明此方法。
但是其他编程语言说,doTask($var1)和doTask($var1,$var2)是重载方法。要调用后者,必须传递两个参数,而前者只需要一个参数。
因此,这种行为(即在编码时决定调用函数的决定)被称为静态多态(即方法重载)。

让我们讨论如何实现与PHP5相关的方法重载。在PHP的情况下,我们必须利用PHP的魔术方法__call()来实现方法重载。

在PHP中,重载意味着方法的行为根据输入参数动态变化。在本教程中,我们将理解这些看法。让我们讨论__call()方法。

__呼叫():

如果某个类执行__call(),则如果使用不存在的方法调用该类的对象,则将调用__call()而不是该方法。

示例

让我们通过一个例子来了解方法重载。

<?php
   class Shape {
      const PI = 3.142 ;
      function __call($name,$arg){
         if($name == 'area')
            switch(count($arg)){
               case 0 : return 0 ;
               case 1 : return self::PI * $arg[0] ;
               case 2 : return $arg[0] * $arg[1];
            }
      }
   }
   $circle = new Shape();
   echo $circle->area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>

输出:

9.426
48

说明:

这里的area()方法是动态创建的,并在魔术方法__call()的帮助下执行,其行为根据作为对象的参数传递而变化。

 类似资料:
  • 本文向大家介绍什么是C#中的方法重载?,包括了什么是C#中的方法重载?的使用技巧和注意事项,需要的朋友参考一下 具有相同名称但参数不同的两个或两个以上方法在C#中称为方法重载。 可以通过更改参数的数量和参数的数据类型来执行C#中的方法重载。 假设您有一个输出数字乘法的函数,那么我们的重载方法将具有相同的名称,但参数数量不同- 以下是显示如何实现方法重载的示例- 示例 输出结果

  • 问题内容: 在PHP中,函数重载和函数覆盖是什么意思。两者之间有什么区别?无法弄清楚它们之间有什么区别。 问题答案: 重载 定义的函数具有相似的签名,但具有不同的参数。 覆盖 仅与派生类相关,派生类中的父类已定义了一个方法,而派生类希望 覆盖 该方法。 在PHP中,您只能使用magic方法重载方法。 覆盖 的示例:

  • 我正忙着学习android,我遇到了方法。我真的不明白它的用途和用途是什么。

  • 问题内容: 该符号在PHP中是什么意思? 问题答案: PHP提供了一些控制结构的替代语法。即,是否,for,foreach和switch。在每种情况下,替代语法的基本形式都是将左大括号更改为冒号(:),将右大括号更改为endif;,endwhile;,endfor;,endforeach;或endswitch;。

  • 问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正

  • 本文向大家介绍JavaScript中的startsWith()方法的重要性是什么?,包括了JavaScript中的startsWith()方法的重要性是什么?的使用技巧和注意事项,需要的朋友参考一下 要知道是使用特定字符开头的字符串还是使用indexOf()方法。但是在高级应用程序中,此方法已过时。因此,ES6为我们提供了startsWith()方法来执行那些高级任务。 在下面的示例中,使用Ind