在 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 而言,它们是两种不同的东西。