PHP 中一个类只能继承一个父类,PHP 没有定义多重继承。PHP 引入了 trait 来克服此限制。您可以在 trait 中定义一个或多个方法,这些方法可以在各种独立类中自由重用。
语法
“trait”关键字按照以下语法使用 -
为了能够调用 trait 方法,需要使用 use 关键字将其提供给另一个类。
示例
Trait 类似于 Class,但仅用于以精细且一致的方式对功能进行分组。无法自行实例化 Trait。
它将产生以下输出 -
Hello World from mytrait
示例
一个 trait 可以在多个类中使用。下面的示例有一个带有 avg() 函数 int it 的 mytrait。它在 marks 类中使用。percent() 方法在内部从 trait 调用 avg() 函数。
请看下面的例子 -
它将产生以下输出 -
percentage: 55
使用多个 trait
一个类可以使用多个 trait。这里我们有两个 trait,每个 trait 都有一个函数,每个 trait 执行两个数字的加法和乘法。两者都在第三个类中使用。
它将产生以下输出 -
加法: 110
乘法: 3000
乘法: 3000
覆盖 trait 函数
当一个类使用某个 trait 时,它的函数对它可用,就像子类继承父方法一样。trait 函数也可以被覆盖。
它将产生以下输出 -
Hello PHP!
insteadof 关键字
有时,多个 trait 可能具有相同的函数名称。因此,在类中使用它们会产生模棱两可的情况。PHP 提供了 insteadof 关键字来告诉解析器函数你打算从哪个 trait 中使用。
它将产生以下输出 -
Hello PHP!
为 trait 函数设置别名
如果您希望能够从两个 trait 调用函数,即使它们具有相同函数,解决方法是为其中一个 trait 指定别名。
示例
在下面的示例中,我们将从 mytrait 调用 sayHello() 作为 hello() -
它将产生以下输出 -
Hello World!
Hello PHP!
Hello PHP!