好吧我试图开始真正学习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