好了,我正试着开始真正的学习PHP的OOP风格。我声明了接口和类,并让类实现接口。但是,我想知道,是否可以将接口文件加载到PHP脚本文件中并从接口调用方法,而不是加载类实现文件?如果是这样的话,b/c怎么做呢?我找不到答案。谢谢!
发布于 2011-12-03 11:56:22
接口不能有实现,所以你不能这样做。它们的目的是规定类(实现接口)必须遵守的“契约”(“实现此接口的类承诺提供公共方法X、Y和Z")。
这真的是非常基本的面向对象编程的东西,它并不只适用于PHP。我建议您在尝试进一步发展之前,先学习一些OOP理论。
发布于 2011-12-03 11:56:40
不能在接口上调用方法。无法实例化接口。您必须创建一个实现该接口的类,并改用该类。
发布于 2015-03-15 16:14:28
提供了一个接口,以便您可以描述一组函数,然后在实现类中隐藏这些函数的最终实现。这使您可以更改这些函数的实现,而无需更改其使用方式。
例如:我有一个数据库。我想写一个访问数据库中数据的类。我这样定义一个接口:
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) {将保持不变。关键是-接口描述了我们访问数据库所需的方法。它没有以任何方式描述我们如何实现这一点。这就是IMPLEMENTing类所做的事情。我们可以根据需要以多种不同的方式多次实现此接口。然后,我们可以在接口的实现之间切换,而不会影响我们的代码,因为接口定义了我们将如何使用它,而不管它实际是如何工作的。
https://stackoverflow.com/questions/8365382
复制相似问题