尝试使用PHP实现method overloading(不要与来自PHP manual的重载定义混淆),并不容易有明显的权衡,因为PHP的本质是你必须有一个方法和内部的if
或switch
语句提供重载,它会创建在长方法中难以阅读的过程代码。
在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) {
...
}
}
答案 0 :(得分:3)
传统方法是:
class Aclass {
public function doStuff(int $a) {
// return other stuff
}
public function doStuff(float $a) {
// return other stuff
}
}
请注意参数的相同功能名称 。
如果你想在php中模拟重载,你的第一种方法通常是要走的路。一般来说,你不需要在PHP中进行重载,因为它的类型很松散,根据定义你不能真正超载。
回答你的问题。如果你真的需要超载,那么你的第一种方法似乎是合适的。使用开关使其更具可读性。
免责声明:虽然你可以这样做,但我不推荐它。哎呀,如果你愿意,你可以做任何事情。这并不意味着你应该这样做。