首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用PHP接口方法

调用PHP接口方法
EN

Stack Overflow用户
提问于 2011-12-03 11:53:55
回答 3查看 5.8K关注 0票数 1

好了,我正试着开始真正的学习PHP的OOP风格。我声明了接口和类,并让类实现接口。但是,我想知道,是否可以将接口文件加载到PHP脚本文件中并从接口调用方法,而不是加载类实现文件?如果是这样的话,b/c怎么做呢?我找不到答案。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-03 11:56:22

接口不能有实现,所以你不能这样做。它们的目的是规定类(实现接口)必须遵守的“契约”(“实现此接口的类承诺提供公共方法X、Y和Z")。

这真的是非常基本的面向对象编程的东西,它并不只适用于PHP。我建议您在尝试进一步发展之前,先学习一些OOP理论。

票数 8
EN

Stack Overflow用户

发布于 2011-12-03 11:56:40

不能在接口上调用方法。无法实例化接口。您必须创建一个实现该接口的类,并改用该类。

票数 3
EN

Stack Overflow用户

发布于 2015-03-15 16:14:28

提供了一个接口,以便您可以描述一组函数,然后在实现类中隐藏这些函数的最终实现。这使您可以更改这些函数的实现,而无需更改其使用方式。

例如:我有一个数据库。我想写一个访问数据库中数据的类。我这样定义一个接口:

代码语言:javascript
复制
interface Database {
function listOrders();
function addOrder();
function removeOrder();
...
}

然后,假设我们开始使用MySQL数据库。因此,我们编写一个类来访问MySQL数据库:

代码语言:javascript
复制
class MySqlDatabase implements Database {
function listOrders() {...
}

我们根据需要编写这些方法,以获取MySQL数据库表。然后,您可以编写控制器来使用接口,如下所示:

代码语言:javascript
复制
$database = new MySqlDatabase();
foreach ($database->listOrders() as $order) {

然后,假设我们决定迁移到Oracle数据库。我们可以编写另一个类来访问Oracle数据库:

代码语言:javascript
复制
class OracleDatabase implements Database {
public function listOrders() {...
}

然后-要将我们的应用程序切换到使用Oracle数据库而不是MySQL数据库,我们只需更改一行代码:

代码语言:javascript
复制
$database = new OracleDatabase();

所有其他代码行,例如:

代码语言:javascript
复制
foreach ($database->listOrders() as $order) {

将保持不变。关键是-接口描述了我们访问数据库所需的方法。它没有以任何方式描述我们如何实现这一点。这就是IMPLEMENTing类所做的事情。我们可以根据需要以多种不同的方式多次实现此接口。然后,我们可以在接口的实现之间切换,而不会影响我们的代码,因为接口定义了我们将如何使用它,而不管它实际是如何工作的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8365382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档