我來自C#,我很努力地找出使我的代碼可擴展的PHP方法。在PHP中使用接口
比方說,比如我有一個計算食物的攝入我的每日推薦量的功能。它看起來在維生素,卡路里,礦物質等...
我想有很多不同的食物對象,我在我的應用程序和不同的功能,看着食物的不同方面,所以我實現了一個IFoodNutrition
界面,使我的我希望與我的功能兼容的食品類實施它。然後我宣佈,我的功能將其作爲一個ARG
function GetRda(IFoodNutrition $food){}
在C#中我將指定所有我需要的接口來使用,所以我知道實現,這將是與此功能兼容的任何類中的屬性。
讓我頭疼的是PHP只允許接口中的方法簽名。
我的問題顯然是範式轉變。我不確定PHP中的等效模式是什麼。我已閱讀文檔,除非從一個抽象類繼承,否則我不能看到類似的替代方法,但是隻能從一個類繼承,因此不能以相同的方式工作。
由於PHP不是類型安全的,我不必創建接口。有人可以發送任何對象到該方法,如果它具有正確的格式所需的屬性,它將工作。這對我來說看起來不太合適,但我習慣於在界面中展示事物應該如何交互。
我覺得應該至少是在對象進行驗證中間,一些明顯的結構,開發者可以看看,然後直觀地實現自己的階級和運行之前發現錯誤一些額外的步驟。
PHP中是否有這樣的特定模式?
PHP(自版本5.1開始)允許[對象,數組,接口和可調用類型的提示](http://php.net/manual/en/language.oop5.typehinting.php),不僅用於接口。 [有向PHP 7提供標量類型提示的建議](https://wiki.php.net/rfc/scalar_type_hints),但它被撤消了。目前,沒有安全的方法來確保PHP中的類型安全。記錄可接受的參數類型,如果可能的話使用類型提示,並檢查函數是否獲得了預期的類型並相應地拋出異常。 – Carsten