This paper mainly introduces the PHP interface multiple inheritance and tarits implementation of multi-inheritance effect of the method, combined with an example of the PHP interface-based multi-inheritance and PHP5.4 introduced in the tarits implementation of multi-inheritance function simple operation skills, the need for friends can refer to, hope to help everyone.
Interface Multiple Inheritance
In object-oriented PHP, an interface can inherit an interface. A PHP class can inherit only one parent class (single inheritance), but interfaces can implement multiple inheritance and can inherit one or more interfaces. Of course, the inheritance of the interface is the same as the inheritance of the class using the extends keyword, to multiple inherited words as long as the inherited interface separated by commas.
It is important to note that when your interface inherits from other interfaces, it inherits the static constant properties and abstract methods of the parent interface directly, so the class must implement all the relevant abstract methods when implementing the interface.
The following examples illustrate:
1. Inherit a single interface
<?phpinterface testa{ function Echostr ();} Interface Testb extends testa{ function dancing ($name);} Class TESTC implements testb{ function Echostr () { echo ' interface inheritance, to implement all relevant abstract methods! "; echo "<br>"; } function Dancing ($name) { echo $name. " I'm dancing! "; }} $demo =new TESTC (); $demo->echostr (); $demo->dancing ("model");//Run result/** interface inheritance, to implement all relevant abstract methods The model is dancing! **/
2. Inherit multiple interfaces
<?phpinterface testa{ function Echostr ();} Interface testb{ function dancing ($name);} Interface TESTC extends testa,testb{ function singing ($nickname);} Class TestD implements testc{ function Echostr () { echo "interface inheritance, to implement all related methods of the parent interface! "; echo "<br/>"; } function Dancing ($name) { echo $name. " I'm dancing! "; echo "<br/>"; } function Singing ($nickname) { echo $nickname. " I'm singing! "; }} $demo =new TestD (), $demo->echostr (), $demo->dancing ("model"), $demo->singing ("Jay Chou");//Run result/** interface inheritance, To implement all the related methods of the parent interface! The model is dancing! Jay Chou is singing! **/
Tarits Multiple Inheritance
Multiple inheritance in a class can inherit multiple parent classes at the same time, the ability to combine multiple parent classes C + + is the use of this model to enhance the flexibility of integration, but multiple inheritance is too flexible, and will bring "diamond inheritance", so the use of a lot of difficulties, the model becomes complex, Most languages now give up the model of multiple inheritance.
But some occasions want to use multiple inheritance, but PHP did not inherit much, so the invention of such a thing.
Traits can be understood as a set of methods that can be called by different classes, but traits is not a class! cannot be instantiated. The first example looks at the syntax:
<?phptrait mytrait{ function TraitMethod1 () {} function traitMethod2 () {}}//Then call this traits, the syntax is: class myclass{use mytrait;} This allows you to invoke the method in traits using the use Mytraits, for example: $obj = new MyClass (), $obj-traitMethod1 (), $obj-traitMethod2 (); >
Specific introduction and use can look at the official introduction.