好吧我試圖開始真正學習PHP中的OOP風格。我已經聲明瞭接口和類,並且有實現接口的類。但是我想知道,是不是可以將接口文件加載到PHP腳本文件中,並從接口調用方法而不是加載類實現文件?如果是這樣,那麼如何做到這一點我找不到答案。謝謝!調用PHP接口方法
0
A
回答
5
接口可能沒有實現,所以你不能這樣做。他們的目的是規定「合同」(即「實現這個接口的類承諾提供公共方法X Y和Z」),這些類(實現接口)必須遵守。
這實際上是非常基本的面向對象的東西,它不適用於PHP。我建議在嘗試進一步研究之前,先研究一些更多的面向對象的理論。
2
您無法在接口上調用方法。一個接口不能實例化。您必須創建一個實現該接口並使用該類的類。
0
提供了INTERFACE,因此您可以描述一組函數,然後隱藏這些函數在實現類中的最終實現。這使您可以更改這些功能的實現,而無需更改使用方法。
例如:我有一個數據庫。我想編寫一個訪問數據庫中的數據的類。我定義了這樣一個接口:
interface Database {
function listOrders();
function addOrder();
function removeOrder();
...
}
那麼我們假設我們開始使用MySQL數據庫。所以我們寫一個類來訪問MySQL數據庫:
class MySqlDatabase implements Database {
function listOrders() {...
}
我們根據需要編寫這些方法來獲取MySQL數據庫表。然後,你可以寫你的控制器使用接口,例如:
$database = new MySqlDatabase();
foreach ($database->listOrders() as $order) {
然後讓我們說,我們決定遷移到Oracle數據庫。我們可以編寫另一個類來獲取到Oracle數據庫這樣的:
class OracleDatabase implements Database {
public function listOrders() {...
}
然後 - 切換我們的應用程序使用Oracle數據庫,而不是MySQL數據庫中,我們只需要修改一行代碼:
$database = new OracleDatabase();
的代碼的所有其它線路,如:
foreach ($database->listOrders() as $order) {
將保持不變。關鍵是 - INTERFACE描述了我們訪問數據庫所需的方法。它不會以任何方式描述我們如何實現這一目標。這就是IMPLEMENTing類所做的。我們可以根據需要以儘可能多的方式多次執行此界面。然後,我們可以在不影響我們的代碼的情況下在接口的實現之間切換,因爲接口定義了我們將如何使用它,而不管它實際上如何工作。
相關問題
- 1. 轉:接口方法調用
- 2. 調用接口方法C#
- 3. 調用方法/接口
- 4. 未調用接口回調方法?
- 5. 如何直接調用接口方法?
- 6. 非法靜態接口方法調用
- 7. php獲取接口方法
- 8. 覆蓋接口方法PHP
- 9. 使用接口調用2種方法
- 10. VB6接口方法的延遲調用
- 11. WCF調用不接口的方法?
- 12. NPE:嘗試調用接口方法
- 13. 如何調用這些接口方法?
- 14. 嘗試調用接口方法的Android
- 15. 調用靜態方法繼承接口
- 16. 通過COM接口調用JavaScript方法
- 17. EJB:方法調用和接口
- 18. 重定向接口方法調用
- 19. 調用接口實現的類方法
- 20. 使用默認方法的接口PHP
- 21. 從靜態方法調用所有實例的接口方法
- 22. C#調用基於接口方法的方法
- 23. 在父Activity中調用Fragment接口方法onBackPressed方法
- 24. 調用抽象類方法中的接口方法
- 25. 在接口c中的方法內的調用方法#
- 26. 接口方法
- 27. 如何在javascript中調用接口並調用android方法?
- 28. PHP:接口內的抽象方法
- 29. 調用父窗口方法
- 30. PHP OOP:接口與非接口方法 - 示例
謝謝!是的,我從書中讀了一些東西后感到困惑,並認爲這就是告訴我要做的事。大聲笑我很習慣程序化的做事方式。 – vol4life27