单一继承语言的救世主? ? 解释 PHP 特性!
感谢您的辛勤工作!
我是系统开发部的山田。
这次,我将解释 PHP 5.4.0 中引入的用于重用代码的特征。
什么是特质?
Traits 是在 PHP 5.4.0 中引入的,是单继承语言中代码重用的机制。
通过将方法分组在一起并在类中声明它们的使用,您可以将它们用作类方法而无需继承。
为什么要创造特质?
PHP 类有一种称为继承的机制。
继承是一种在继承现有类内容的同时创建新类的机制。
继承消除了编写相同代码的需要,但是这种继承被设计为每个类只允许一个继承,所以如果你想在不同的类中使用多个方法,你可以使用继承,它们之间的关系往往很复杂,使得它。有点难处理。
Trait 的诞生就是为了解决这个问题。
通过将方法作为特征分组在一起,并允许通过在类中声明它们来简单地使用它们,我们可以减少单继承机制带来的复杂性。
如何使用
如何创造特质
特征 特征名称 { 公共函数方法名称 1() { 处理 } 公共函数方法名称 2() { 处理 } }
如何在课堂上使用
class 类名 { 使用创建的特征名称; // 类处理 }
检查实际代码
让我们实际编写代码,看看它是否有效。
待确认的详情如下。
- 你的类方法工作正常吗?
- 继承的类方法是否可以正常工作?
- 当在类中声明状态时它可以正常工作吗?
为此,我想创造一个感觉像神一样的强大英雄。
创建人类时,仅定义名字和身高,英雄具有人类特征和挥舞剑的能力。
我们还希望通过添加“更快的脚步”和“更强的身体”等物理强化特性来创造一个强大的英雄。
代码编写流程如下。
- 创造体力状态
- 创建一个继承人类类的英雄类
- 将创建的状态继承到英雄类并检查它是否确实有效
特质EnhancedBody { public function fastRunner() { echo '我的腿变得更快' } public function StrongBody() { echo '我的身体变得更强'; } } class Human { public $name; public function __construct($;名称) { $this->name = $name; $this->height = rand(140, 190); } public function status() { echo "名称: {$this->name}, 高度: {$this- >;height}"; } } class Swordsman extends Human { useEnhancedBody; public function swingTheSword() { echo "挥剑"; } }
上述代码的运行结果如下所示。
// 创建英雄类 $taro = new Swordsman('taro'); // 执行人类类中定义的方法 $taro->status(); // Name: taro, height: 150 // 英雄类 执行$taro->swingTheSword(); // 挥动剑 // 执行身体增强状态中定义的方法 $taro->fastRunner(); // 变得更快 $taro ->strongBody();你的身体更强壮
既然我们能够创建一个比上面更强的英雄,我们可以看到我们可以使用类方法、继承的类方法和声明的状态方法。
概括
这次,我解释了特征,它是单继承语言中重用代码的机制之一。
虽然用法本身是一个有限的功能,但是你可以简单地通过在 Trait 中编写一个方法并为你想要使用的类声明一个用法来使用它,这降低了代码的复杂性,让代码更容易阅读,所以请请使用它。
最后
我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: https://sekarakulab.beyondjapan.com/