记得有一道口试题问php是否支持多继续

答案:不可以,只支持单继续。

如何实现多继续呢?

php多继承多进修能力多赚钱之PHP若何多继续 GraphQL

答案:可以利用interface或trait实现。
()

为什么会想到这个问题,由于想到如果类继续多个接口,然后他们之间还有相同的属性和方法会引用谁的方法或属性,谁又会被覆盖?

总结:

1.利用interface声明类不能被实例化,并且属性必须是常量,方法不能有方法体

2.trait声明的类不能被实例化,由use引入,会覆盖父类的相同属性及方法,如果有多个use,那么按顺序下面的覆盖最上面的相同的属性及方法

接口是什么?

利用接口(interface),可以指定某个类必须实现哪些方法,但不须要定义这些方法的详细内容。

接口是通过interface关键字来定义的,就像定义一个标准的类一样,但个中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

trait是什么?

看上去既像类又像接口,实在都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,

其浸染有两个:表明类可以做什么;供应模块化实现。

Trait是一种代码复用技能,为PHP的单继续限定供应了一套灵巧的代码复用机制。

Trait为了减少单继续措辞的限定,使开拓职员能够自由地在不同层次构造内独立的类复用method.Trait和Class组合的语义定义了一种减少繁芜性的办法,避免传统的多继续和Mixin类干系范例问题。

Trait和Class相似,但仅仅旨在用细粒度和同等的办法来组合功能。
无法通过trait自身来实例化。
它为传统继续增加了水平特性的组合;也便是说,运用的几个Class之间不须要继续。

优先级

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

通过逗号分隔,在use声明列出多个trait,可以都插入到一个类中。

以上便是PHP如何多继续的详细内容,更多请关注其它干系文章!