如何在 PHP 中重载方法? [复制]

Posted

技术标签:

【中文标题】如何在 PHP 中重载方法? [复制]【英文标题】:How to overload methods in PHP? [duplicate] 【发布时间】:2014-06-30 14:17:53 【问题描述】:

我是 php 新手,我想在 PHP 中执行以下 java 源代码。谁能帮帮我?

someMethod(int i) 
System.out.println("message");
// more code

someMethod(String s) 
System.out.println("another message");
// more different code

【问题讨论】:

You cannot overload PHP functions. Function signatures are based only on their names and do not include argument lists 取自这篇帖子***.com/questions/4697705/php-function-overloading 你可以简单地传递一个空值作为参数。但是当涉及到几个参数时,它会有点复杂。 在 PHP 中调用这个函数 function someFunction() 就像 someFunction($param1,$param2); 一样是完全有效的。注意参数计数在调用中更多。 【参考方案1】:

您不能重载 PHP 函数,因为它们的签名只包括它们的名称而不包括它们的参数列表:https://***.com/a/4697712/386869

您可以为您尝试执行的操作执行两个单独的函数(我推荐),或者编写一个函数并为每种类型执行不同的操作。

编写两个方法很简单:

function myFunctionForInt($param)

    //do stuff with int

function myFunctionForString($param)

    //do stuff with string

如果您想改为使用一个函数并检查类型(不推荐):

function myFunction($param)

    if(gettype($param) == "integer")
    
        //do something with integer
    
    if(gettype($param) == "string")
    
        //do something with string
    

Docs for gettype()

我不知道这是最好的方法。此外,对于您的特定示例,Imat 的示例最有意义,因为您只是在打印一条消息。

【讨论】:

我怀疑八衬衫的实际用例不仅仅是打印一条消息。但我认为不知道预期参数的类型是不好的编码习惯,特别是因为 PHP 的类型很松散,例如,如果您不小心将整数分配给应该保存字符串的变量,也不会抱怨。如果您知道要使用字符串调用 myFunction,则通过将其命名为 myFunctionWithString(或类似的独特名称)来区分函数。 我同意你的看法。这就是为什么我首先提到它,但认为它并不需要解释。不过,我会修改我的答案以更强烈地推荐这一点。 感谢 rar 和 @Brian-Kendig。是的,我有更多代码。但解释帮助了我:)【参考方案2】:

好的,所以你想创建一个打印消息的函数。

function my_function_name()

   echo "your message here;

如果你想要一个带参数的函数,你可以这样做。

function my_function_name($params)

    echo "your message here";
    echo $params; //call the paramereters

【讨论】:

以上是关于如何在 PHP 中重载方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP >= 5.4 的特征中重载类构造函数

如何重载 Python 的 __bool__ 方法? [复制]

如何在 JavaScript ECMA6 中重载构造函数? [复制]

如何在 Rider 中启用视图热重载? [复制]

PHP 是不是有“方法重载”的规定,就像 java 和其他一些编程语言一样?如果没有,是不是有替代方案? [复制]

如何从 PHP 扩展中重载函数?