编程到一个接口,而不是在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

上一篇: Program to an interface not an implementation in php

下一篇: Good websites to test webcrawler on