这个问题听起来很明显,也可能很愚蠢。但我想弄清楚为什么我需要使用接口?我想我可以处理接口使用类所做的大部分事情,那么使用它们有什么意义呢?确实,如果我不使用接口,我可能会遇到问题,但我想弄清楚不使用接口会导致什么问题?
接口的一种用途是它们允许我们定义行为并对实现它们的类施加限制。
另一个用途是接口作为类型工作,我可以使用接口进行类型提示,如下所示。
//Java example
public interface IPaintable{
void Paint(System.Drawing.Color color);
}
public void Paint(IPaintable item, System.Drawing.Color color){
item.Paint(color);
}
但是 PHP 中接口还有其他用途吗?
即在下面的代码中使用接口可以获得什么好处。
//Non interface implementation
<?php
class DBPersonProvider
{
public function getPerson($givenName, $familyName)
{
/* go to the database, get the person... */
$person = new Person();
$person->setPrefix("Mr.");
$person->setGivenName("John");
return $person;
}
}
/* I need to get person data... */
$provider = new DBPersonProvider();
$person = $provider->getPerson("John", "Doe");
echo($person->getPrefix());
echo($person->getGivenName());
?>
//Implementation with interface
<?php
interface PersonProvider
{
public function getPerson($givenName, $familyName);
}
class DBPersonProvider implements PersonProvider
{
public function getPerson($givenName, $familyName)
{
/* pretend to go to the database, get the person... */
$person = new Person();
$person->setPrefix("Mr.");
$person->setGivenName("John");
return $person;
}
}
/* I need to get person data... */
$provider = new DBPersonProvider();
$person = $provider->getPerson("John", "Doe");
echo($person->getPrefix());
echo($person->getGivenName());
?>