试图用PHP实现method overloading(不要与PHP manual的重载定义混淆),不容易有明显的折衷,因为PHP的性质你必须有一个方法并且if
或switch
声明里面提供重载,它创建的程序代码难以用长方法读取。在PHP中重载方法是不好的做法?
在PHP中有方法重载有什么好处,它可以以任何其他方式实现吗?
class MyClass {
public function doMany($input) {
if (is_array($input)) {
...
} else if (is_float($input)) {
...
}
}
}
与传统方法
class MyClass {
public function doArray(array $input) {
...
}
public function doFloat(float $input) {
...
}
}
这个问题既感觉非常宽泛,也非常基于我的意见。它*可能会在https://softwareengineering.stackexchange.com/的主题上更多,但请首先仔细阅读其常见问题解答。如果你可以描述一个你想要解决的更具体的问题,你可能会得到更好的答案 - 很难提供可能适用于方法重载的各种可能方案。 – IMSoP
如果您不想使用'switch',那么将'gettype()'与动态定义的方法名称结合起来用于每种类型的单独方法调用 –