【发布时间】:2017-10-04 15:21:11
【问题描述】:
尝试使用 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) {
...
}
}
【问题讨论】:
-
这个问题对我来说既非常宽泛,又非常基于意见。它可能在softwareengineering.stackexchange.com 上更贴近主题,但请先仔细阅读他们的常见问题解答。如果你能描述一个你试图解决的更具体的问题,你可能会得到更好的回应——很难给出适用于所有可能使用方法重载的替代方案。
-
如果您不想使用
switch,则将gettype()与为每种类型的单独方法调用动态定义的方法名称结合使用
标签: php overloading