Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Objektschnittstelle

PHP-Objektschnittstelle

伊谢尔伦
伊谢尔伦Original
2016-11-23 14:08:441097Durchsuche

Mithilfe einer Schnittstelle können Sie angeben, welche Methoden eine Klasse implementieren muss, Sie müssen jedoch nicht den spezifischen Inhalt dieser Methoden definieren.

Die Schnittstelle wird über das Schlüsselwort interface definiert, genau wie die Definition einer Standardklasse, aber alle darin definierten Methoden sind leer.

Alle in der Schnittstelle definierten Methoden müssen öffentlich sein. Dies ist eine Eigenschaft der Schnittstelle.

implementiert

Um eine Schnittstelle zu implementieren, verwenden Sie den Implements-Operator. Die Klasse muss alle in der Schnittstelle definierten Methoden implementieren, andernfalls wird ein schwerwiegender Fehler gemeldet. Eine Klasse kann mehrere Schnittstellen implementieren. Verwenden Sie Kommas, um die Namen mehrerer Schnittstellen zu trennen.

Hinweis:

Bei der Implementierung mehrerer Schnittstellen dürfen Methoden in den Schnittstellen nicht denselben Namen haben.

Hinweis: Die

-Schnittstelle kann auch geerbt werden, indem der Extens-Operator verwendet wird.

Hinweis:

Um eine Schnittstelle zu implementieren, muss eine Klasse die in der Schnittstelle definierten Methoden auf genau die gleiche Weise verwenden. Andernfalls kommt es zu einem schwerwiegenden Fehler.

Konstanten

Konstanten können auch in der Schnittstelle definiert werden. Schnittstellenkonstanten werden genauso verwendet wie Klassenkonstanten, können jedoch nicht von Unterklassen oder Unterschnittstellen überschrieben werden.

Beispiel

Beispiel Nr. 1 Schnittstellenbeispiel

interface ITemplate
{
    public function setVariable($name,$var);
    public function getHtml($template);
}
//实现接口
//下面的写法是正确的
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;
    }
}
//下面的写法是错误的,会报错,因为没有实现getHtml()
class BadTemplate implements ITemplate
{
    private $vars = array();
    public function setVariable($name,$var)
    {
        $this->vars[$name] = $var;
    }
}

Beispiel Nr. 2 Erweiterbare Schnittstelle

interface a
{
    public function foo();
}
interface b extends a
{
    public function baz(Baz $baz);
}
//正确写法
class c implements b
{
    public function foo(){}
    public function baz(Baz $baz){}
}
//错误写法
class d implements b
{
    public function foo(){}
    public function baz(Foo $foo){}
}

Beispiel Nr. 3 Erben mehrerer Schnittstellen

interface a
{
    public function foo();
}
interface b
{
    public function bar();
}
interface c extends a,b
{
    public function baz();
}
class d implements c
{
    public function foo(){}
    public function bar(){}
    public function baz(){}
}

Beispiel #4 Verwendung von Schnittstellenkonstanten

interface a
{
    const b = 1;
}
//输出接口常量
echo a::b;
//错误写法
class b implements a
{
    const b = 1;
}

Schnittstellen- und Typeinschränkungen bieten eine gute Möglichkeit, sicherzustellen, dass ein Objekt bestimmte Methoden enthält. Siehe Instanzoperator- und Typeinschränkungen.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn