【发布时间】:2021-04-02 14:29:13
【问题描述】:
Java 编译器确保每个方法调用都包含与参数类型兼容的参数。在下面的例子中,传递一些没有实现 LogService 接口的东西甚至不会编译。
public logMessage(LogService logService, String message) {
logService.logMessage(message);
}
有没有办法用 PHP 实现相同的功能?如果我传递了一个与 LogService 接口不兼容的对象,我想在 IDE 中立即知道,而不是在测试中发现。我目前使用的是 PHP 5.4,但我可以选择更高的版本。
public function logMessage($logService, $message) {
$logService->logMessage($message);
}
【问题讨论】:
-
升级到支持参数类型声明的 PHP 版本 (PHP 7)。实际上,请转到 7.3 或更高版本,因为这是当前支持的。您也将获得不错的性能提升。
-
PHP 5.4 已在 5 年前停止使用并获得支持。
-
是的,我意识到我应该看过去 5.4。在多年没有使用这项技术之后,我刚刚开始用 PHP 编写一些代码,我只是想在我真正考虑任何实现之前记住如何做事。但基本上你是在告诉我,我在 5.4 上浪费时间......
-
约翰,在我自己的搜索中,我什至没有遇到“暗示”这个词。我看到它几乎回答了我的问题。请整理一个答案帖。
标签: php parameters interface parameter-passing