PHP Laravel中的Trait使用方法_php实例_脚本之家

事实上,PHP
作为一门编程语言存在的问题之一,就是你只能使用单继承。这意味着一个类只能从另一个类中继承。例如,可能希望从几个不同的类继承方法,以防止代码重复。在
PHP 5.4 中 一个新的语言特性被添加进来,这就是众所周知的 Traits,它在
Laravel 框架中被广泛使用。

Trait是一种在单继承语言中重用代码的机制。Trait旨在通过使开发人员能够在生活在不同类层次结构中的多个独立类中自由地重用方法集来减少单继承的某些限制。Traits和类组合的语义以降低复杂性的方式定义,并避免了与多重继承和Mixins相关的典型问题。

PHP 官方网站给出了 Traits 的定义,如下:

Trait类似于类,但仅用于以细粒度和一致的方式对功能进行分组。无法自行实例化Trait。它是对传统继承的补充,可以实现行为的横向组合;
也就是说,类成员的应用程序不需要继承。

“ Trait 是单继承语言中的一种代码复用机制。 Trai
的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。
Trait
的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和
Mixins 相关的一些典型问题。

什么是PHP Trait?

Trait 与类非常相似,但它的目的仅仅是用更好、一致的方式汇聚一些方法。
Trait
本身不能被实例化。除了传统继承之外,它能水平组合行为,换言之,类的应用程序不需要继承。”

Trait仅仅是您希望包含在另一个类中的一组方法。与抽象类一样,Trait不能自己实例化。

PHP Traits是什么?

Trait的一个例子可以是:

Trait 是一组简单的包含在另一个类中的方法。 Trait
就像一个抽象类一样,无法单独实例化。

trait SharePost { public function share { return 'share this post'; } }

一个 Trait 示例就像下面这样:

然后你可以把这个trait 包含在其他类中,就像这样:

trait SharePost { public function share { return 'share this post'; }}
class Post { use SharePost; } class Comment { use SharePost; }

然后,您可以在其他类中这样使用 Trait :

现在,如果要从这些类中创建新对象,您会发现它们都有share()方法可用:

class Post { use SharePost;}class Comment { use SharePost;}
$post = new Post;echo $post->share; $comment = new Comment;echo $comment->share;

现在,如果您要从这些类中创建新对象,您会发现它们都可以使用 share()
方法:

trait 如何运作?

$post = new Post;echo $post->share; // 'share this post' $comment = new Comment;echo $comment->share; // 'share this post'

从上面的示例中可以看出,尽管没有定义该方法,但是对象Post和Comment对象都具有share()可用的方法。

Traits 如何工作 ?

Trait基本上只是一种在运行时“复制和粘贴”代码的方法。

从上面例子可以看到, 尽管 Post 和 Comment
本身没有定义方法,但是他们可以调用 share() 方法。

这意味着Trait被复制到Post和Comment类中,因此当您实例化一个新实例时,share()方法代码将可用。

Trait 是运行时 「复制和粘贴」 代码的一种方式.

我经常检查我的代码以及如何构建我的代码,以便可以快速完成未来的功能添加,并且新项目可以轻松扩展以前的想法。

这意味着 Trait 被复制到 Post and Comment ,因此当你实例化一个新实例,
可以直接调用 share() 方法。

如何在laravel中使用trait ?

我会定期检查我的代码以及如何构造新代码,目的是为了将来可以快速构建新功能,并且可以轻松的开启新项目。

我在我的Http目录中创建了一个Trait目录,其中有一个名为的TraitBrandsTrait.php

那么,怎样在laravel中使用traits呢?

use App\Http\Traits\BrandsTrait;class YourController extends Controller { use BrandsTrait; public function addProduct() { $brands = $this->brandsAll(); }}

首先我在项目的 Http 目录下创建一个Traits文件夹,并且新建了一个名叫
BrandsTrait.php 的Trait文件

这是我的BrandsTrait.php

use App\Http\Traits\BrandsTrait;class YourController extends Controller { use BrandsTrait; public function addProduct() { $brands = $this->brandsAll(); }}

这是我的 BrandsTrait.php

甚至, 如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该 trait 是个不错的选择。总结以上所述是小编给大家介绍的在 PHP 和 Laravel 中使用 Traits的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注