编程到一个接口,而不是在PHP中的实现
主要设计原则之一是编程接口而不是实现。 这甚至可能在PHP或任何其他弱类型的语言。
编辑:
我可能没有像我应该那样清楚地写出问题。 我不是说php不能使用接口 - 它可以。 我的意思是设计原则“编程接口而不是实现”在弱类型语言中变得多余。
是。 定义界面:
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
并执行它:
// Implement the interface
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
接口上的PHP手册:http://php.net/manual/en/language.oop5.interfaces.php
我不知道为什么仅仅因为语言输入较弱而无法使用接口。
编辑:有一个接口的点(或多或少)是这样的,所以你可以重新使用你的代码,而不管实际实现上述接口的类。
假设你的程序使用了一个接口Set
,它具有方法addItem()
, removeItem()
和contains()
。 使用接口,无论底层的Set
实现如何,你都可以调用这三种方法中的任何一种,无论是HashSet,TreeSet还是其他。
如果你使用弱类型语言,这不会改变; 您仍然可以编码,就好像您使用的是强类型语言。 我知道我没有很好地解释这个解释,但我希望你明白。
PHP有接口,你可以编程给他们。 你为什么不能这样做?
对接口进行编程意味着您只需使用接口提供的功能,既不依赖实现细节,也不使用实现提供的其他功能,而只是碰巧知道它,因为实现可能会改变(接口不应该)。
取决于你的意思是“接口”和“实施”。 这些是松散的术语,其含义可以根据上下文而改变。
PHP5包含类似于Java和C#的OOP构造,例如作为引用,类,抽象类和接口的对象。 它还包含方法参数的类型提示。 这些工具可能已经被用来为某些东西构建“接口”。
链接地址: http://www.djcxy.com/p/47229.html