在 PHP7 中可以(并且应该)使用不同的参数重新声明方法吗?
Can (and should) methods be redeclared with different parameters in PHP7?
我正在对一大堆遗留 PHP4 代码进行现代化改造。我还不是很精通 OOP,但我一直坚持这份工作。
在旧的 PHP4 代码中,我有以下内容:
class theParent {
function greet () {
return "Good morning";
}
}
class theChild extends theParent {
function greet ($inDaHood = FALSE) {
if ($inDaHood)
return "Yo! What up?\n";
else
return "Hello\n";
}
}
在子 class 中,greet() 方法使用与父 class 中原始 greet() 方法不同的参数重新声明。这在 PHP4 中很好(本质上是免费的;它甚至没有私有方法)。它也适用于 PHP7 而不会产生任何错误。
但是在 PHP7 中仍然推荐这样做吗?或者现在有更合适的方法吗?
这没有错。您只是 overloading/overriding/whatever-PHP-calls-it greet
方法。事实上,这两种方法唯一的共同点就是名称;就 PHP 而言,它们是两种不同的东西。
我正在对一大堆遗留 PHP4 代码进行现代化改造。我还不是很精通 OOP,但我一直坚持这份工作。
在旧的 PHP4 代码中,我有以下内容:
class theParent {
function greet () {
return "Good morning";
}
}
class theChild extends theParent {
function greet ($inDaHood = FALSE) {
if ($inDaHood)
return "Yo! What up?\n";
else
return "Hello\n";
}
}
在子 class 中,greet() 方法使用与父 class 中原始 greet() 方法不同的参数重新声明。这在 PHP4 中很好(本质上是免费的;它甚至没有私有方法)。它也适用于 PHP7 而不会产生任何错误。
但是在 PHP7 中仍然推荐这样做吗?或者现在有更合适的方法吗?
这没有错。您只是 overloading/overriding/whatever-PHP-calls-it greet
方法。事实上,这两种方法唯一的共同点就是名称;就 PHP 而言,它们是两种不同的东西。