在 PHP 和 Laravel 中使用 Traits的技巧
发布时间:2022-07-09 15:22:42 所属栏目:PHP教程 来源:互联网
导读:Trait 是单继承语言(如 PHP )中的一种代码复用机制,这篇文章主要介绍了在 PHP 和 Laravel 中使用 Traits的方法,需要的朋友可以参考下。 PHP 官方网站给出了 Traits 的定义,如下: Trait 是单继承语言(如 PHP )中的一种代码复用机制,Trai 的目的是减少
Trait 是单继承语言(如 PHP )中的一种代码复用机制,这篇文章主要介绍了在 PHP 和 Laravel 中使用 Traits的方法,需要的朋友可以参考下。 PHP 官方网站给出了 Traits 的定义,如下: “ Trait 是单继承语言(如 PHP )中的一种代码复用机制,Trai 的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。 Trait 的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和 Mixins 相关的一些典型问题。 一个 Trait 示例就像下面这样: trait SharePost { public function share($item) { return 'share this post'; } } 然后,您可以在其他类中这样使用 Trait : class Post { use SharePost; } class Comment { use SharePost; } 现在,如果您要从这些类中创建新对象,您会发现它们都可以使用 share() 方法: $post = new Post; echo $post->share(''); // 'share this post' $comment = new Comment; echo $comment->share(''); // 'share this post' Traits 如何工作 ? 从上面例子可以看到, 尽管 Post 和 Comment 本身没有定义方法,但是他们可以调用 share() 方法。 Trait 是运行时 「复制和粘贴」 代码的一种方式. 这意味着 Trait 被复制到 Post and Comment ,因此当你实例化一个新实例, 可以直接调用 share() 方法。 使用它就像这样: use AppHttpTraitsBrandsTrait; class YourController extends Controller { use BrandsTrait; public function addProduct() { $brands = $this->brandsAll(); } } 这是我的 BrandsTrait.php <?php namespace AppHttpTraits; use AppBrand; trait BrandsTrait { public function brandsAll() { // 从品牌表中获取所有品牌. $brands = Brand::all(); return $brands; } } 甚至, 如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该 trait 是个不错的选择。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |