如何在 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 中重载方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何重载 Python 的 __bool__ 方法? [复制]
如何在 JavaScript ECMA6 中重载构造函数? [复制]