Heim  >  Artikel  >  Backend-Entwicklung  >  Kann PHP von mehreren übergeordneten Klassen erben?

Kann PHP von mehreren übergeordneten Klassen erben?

(*-*)浩
(*-*)浩Original
2019-09-28 11:21:244716Durchsuche

PHP verfügt nicht über Mehrfachvererbungsfunktionen. Selbst in einer Programmiersprache, die Mehrfachvererbung unterstützt, verwenden wir diese Funktion selten. Nach Meinung der meisten Menschen ist Mehrfachvererbung keine gute Entwurfsmethode.

Kann PHP von mehreren übergeordneten Klassen erben?

Aber was sollen wir tun, wenn wir in der Entwicklung Mehrfachvererbung verwenden?

Im Folgenden wird das Problem der Verwendung von Merkmalen zur Implementierung der Mehrfachvererbung in PHP vorgestellt. (Empfohlenes Lernen: PHP-Video-Tutorial)

Seit PHP5.4 hat PHP die Trait-Syntax für die Wiederverwendung von Code implementiert.

Trait ist ein Code-Wiederverwendungsmechanismus, der für die Single-Inheritance-Sprache von PHP vorbereitet ist. Um die Einschränkungen der Einzelvererbung zu verringern, werden Methoden zur Wiederverwendung von Methoden auf verschiedenen Strukturebenen entwickelt. Die Semantik der Kombination von Merkmal und Klasse definiert eine Möglichkeit, die Komplexität zu reduzieren und typische Probleme im Zusammenhang mit der traditionellen Mehrfachvererbung zu vermeiden Vererbungs- und Mixin-Klassen.

需要注意的是,从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

Nehmen wir zunächst ein Beispiel:

trait TestOne{

    public function test()
    {
        echo "This is trait one <br/>";
    }

}

trait TestTwo{

    public function test()
    {
        echo "This is trait two <br/>";
    }


    public function testTwoDemo()
    {
        echo "This is trait two_1";
    }

}

class BasicTest{

    public function test(){
        echo "hello world\n";
    }

}


class MyCode extends BasicTest{

    //如果单纯的直接引入,两个类中出现相同的方法php会报出错
    //Trait method test has not been applied, because there are collisions with other trait 
    //methods on MyCode 
    //use TestOne,TestTwo;
    //怎么处理上面所出现的错误呢,我们只需使用insteadof关键字来解决方法的冲突
    use TestOne,TestTwo{
        TestTwo::test insteadof TestOne;
    }

}


$test = new MyCode();
$test->test();
$test->testTwoDemo();

Laufergebnis:

This is trait two 
This is trait two_1

Das obige ist der detaillierte Inhalt vonKann PHP von mehreren übergeordneten Klassen erben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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