如何在 PHP 和 Laravel 中使用 Traits
事实上,PHP 作为一门编程语言存在的问题之一,就是你只能使用单继承。这意味着一个类只能从另一个类中继承。例如,可能希望从几个不同的类继承方法,以防止代码重复。在 PHP 5.4 中 一个新的语言特性被添加进来,这就是众所周知的 Traits,它在 Laravel 框架中被广泛使用。 PHP 官方网站给出了 Traits 的定义,如下: “ Trait 是单继承语言(如 PHP )中的一种代码复用机制。 Trai 的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。 Trait 的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和 Mixins 相关的一些典型问题。 PHP Traits是什么?Trait 是一组简单的包含在另一个类中的方法。 Trait 就像一个抽象类一样,无法单独实例化。 一个 Trait 示例就像下面这样: 1 trait SharePost { 2 3 public function share($item) 4 { 5 return 'share this post'; 6 } 7 8 } ? 然后,您可以在其他类中这样使用 Trait : 1 class Post { 2 3 use SharePost; 4 5 } 6 7 class Comment { 8 9 use SharePost; 10 11 } ? 现在,如果您要从这些类中创建新对象,您会发现它们都可以使用 1 $post = new Post; 2 echo $post->share(''); // 'share this post' 3 4 $comment = new Comment; 5 echo $comment->share(''); // 'share this post' ? Traits 如何工作 ?从上面例子可以看到,尽管 Trait 是运行时 「复制和粘贴」 代码的一种方式. 这意味着 Trait 被复制到 我会定期检查我的代码以及如何构造新代码,目的是为了将来可以快速构建新功能,并且可以轻松的开启新项目。 那么,怎样在laravel中使用traits呢? 首先我在项目的 使用它就像这样: 1 use AppHttpTraitsBrandsTrait; 2 3 class YourController extends Controller { 4 use BrandsTrait; 5 6 public function addProduct() { 7 $brands = $this->brandsAll(); 8 } 9 } ? 这是我的 BrandsTrait.php 1 <?php 2 namespace AppHttpTraits; 3 4 use AppBrand; 5 trait BrandsTrait { 6 public function brandsAll() { 7 // 从品牌表中获取所有品牌. 8 $brands = Brand::all(); 9 10 return $brands; 11 } 12 } ? 甚至, 如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该 trait 是个不错的选择。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |