簡體   English   中英

我們如何在 PHP 中強制執行參數類型?

[英]How do we enforce parameter types in PHP?

Java編譯器確保每個方法調用都包含與參數類型兼容的arguments。 在下面的示例中,傳遞不實現 LogService 接口的東西甚至不會編譯。

public logMessage(LogService logService, String message) {
    logService.logMessage(message);
}

有沒有辦法用 PHP 實現相同的效果? 如果我通過一個與LogService接口不兼容的object,我想立即在IDE中知道,而不是在測試中發現。 我目前正在使用 PHP 5.4,但我可以選擇更高的 go。

public function logMessage($logService, $message) {
    $logService->logMessage($message);
}

PHP 7 引入了類型聲明,允許您執行您在 Java 示例中顯示的內容。 如果你使用declare(strict_types=1); 如果參數類型與 function 簽名不匹配,PHP 將引發致命錯誤。 如果省略它,它將嘗試將值類型轉換為該類型(很像使用==比較運算符與嚴格的===比較運算符時)。

public function logMessage(LogService $logService, string $message) {
    $logService->logMessage($message);
}

我建議使用最新版本的 PHP,不僅可以確保您擁有最新的安全補丁,還可以獲得最新的功能。 例如,可空參數類型直到 PHP 7.1 才引入object類型在 7.2中, 聯合類型在 8.0 中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM