PhpTrait là gì? :man_running:

Một Trait dễ dàng và đơn giản là một đội các phương thức bạn có nhu cầu thêm vào một class khác. Một Trait, hệt như abstract class, quan trọng khởi tạo.

Bạn đang xem: Trait

Ví dụ

trait Sharable public function share($item) return "share this item"; Bạn rất có thể thêm Traint giống hệt như sau:class Post use Sharable; class phản hồi use Sharable; Giờ, nếu họ tạo một object bắt đầu thì cả nhì class đều phải sở hữu phương thức share().

*

$post = new Post;echo $post->share(""); // "share this item" $comment = new Comment;echo $comment->share(""); // "share this item"

Trait hoạt động như nuốm nào? :man_walking:

Trait chuyển động giống như cách buổi giao lưu của "copy với paste". Nghĩa là cố kỉnh vì bài toán phải copy đoạn code kia vào từng class chúng ta để sử dụng, khi bạn sử dụng trait, nó sẽ tựa như như câu hỏi bạn copy cục bộ code của traint đó vào khu vực mà các bạn định nghĩa class đó.Chú ý rằng khi sử dụng traint, chúng ta cũng có thể overwrite lại cách tiến hành của một trait.

Traits không giống gì Abstract classes?
*

Trait không giống với một Abstract class, ở đoạn nó cấp thiết kế thừa.Tưởng tượng rằng Post và phản hồi sẽ phải kế thừa từ AbstractSocial class. Như vậy bọn họ sẽ gồm cây thừa kế như sau:class AbstractValidate extends AbstractCache class AbstractSocial extends AbstractValidate class Post extends AbstractSocial Nhìn sơ thiết bị kế thừa, ta thấy chúng có không ít lớp, từ bỏ Post cho AbstractCache, nó đã từng qua mấy đời rồi. Với sự tình đơn giản và dễ dàng là lượt thích và tóm tắt nó do dự đã biến tướng như nào rồi. Trả sử phương thức like để public, mà lại lại điện thoại tư vấn đến một thuộc tính private, và thuộc tính private kia không được kế thừa. Thôi xong, phương thức này đã chính thức trở thành vô nghĩa.
*

Trait khác gì cùng với Interfaces? :man_construction_worker:

Trait nhìn bao gồm vẻ tốt hơn Interface. Cả Trait cùng Interface đầy đủ rất dễ dàng để sử dụng mà không nhiệt tình nhiều tới các cài đặt bên phía trong class. Mặc dù nhiên, điều biệt lập ở đấy là Interface hỗ trợ rằng Interface có tác dụng thực hiện , còn Trait hỗ trợ khả năng thực hiện.

Nói do vậy hơi mông lung, hiểu nôm mãng cầu là giả sử bạn phải một chức năng nào đó, và bạn gửi mang đến interface một yêu mong với các tham số tương ứng. Còn cùng với trait, khi chúng ta sử dụng trait, thì tự bản thân bạn đã sở hữu thể thực hiện chức năng đó.

Ví dụ

For example:

// Interfaceinterface Sociable public function like(); public function share(); // Traittrait Sharable public function share($item) // tóm tắt this cống phẩm // Classclass Post implements Sociable use Sharable; public function like() // Trong lấy ví dụ này , thì Sociable interface cung cấp Post có khả năng thực hiện like và shareCòn khi thực hiện Trait, share() và like() là hầu hết phương thức được setup trong class Post.The Sharable Trait implements the share() method & the like() method is implemented in the Post class.

Điểm mạnh của trait?
*

Tránh code bị tái diễn nhiều lần.Ngăn trặn bắt buộc sự kế thừa phức tạp.Cung cấp cho một cách đơn giản để tái thực hiện code, tăng hiệu xuất chương trình.

Điểm yếu đuối của Trait?

Trait cung cấp cho một class quá nhiều khả năng. Nhiều cái còn chẳng sử dụng dến, tuy vậy nó đã được tư tưởng trong trait, nên khi sử dụng trait trong class, nó sẽ được nhìn nhận như nó đang được setup trong class. Ví dụ trả sử chúng ta có class thương hiệu là Mèo, và chúng ta sử dụng trait dịch rời trong class Mèo, và chúng ta cung cấp cho một con mèo có công dụng bay, kĩ năng bơi, đào đất. Nghe có vẻ như có gì đó sai sai..
*
*
Một điểm yếu khác nữa khi áp dụng trait, là bạn code ko thực sự làm rõ mọi chi tiết về trait, hoặc chỉ sử dụng một trong những phần nhỏ code của trait, nhưng yêu cầu chứa toàn bộ code của trait vào một class. Nó dư vượt nhiều.However with that being said, there are possible drawbacks when using Traits too.

Xem thêm: Kể Các Thiết Bị Vào Của Máy Tính Bao Gồm, Nêu Các Thiết Bị Vào Ra Của Máy Tính

Khi như thế nào NÊN áp dụng Trait :upside_down: :upside_down: :upside_down:

Khi trait thực hiện tác dụng một cách đúng đắn và nhỏ gọn.Khi trait đơn giản và chắc chắn là là các bạn hiểu hoàn toàn rõ nó như chúng ta hiểu tình yêu của chính bản thân mình :face_with_monocle:Khi trait được áp dụng ở nhiều hơn nữa một class, hoặc công dụng quá phức tạp để download đặt.Khi bạn lười, và không có thời gian để làm những việc mà chúng ta nên làm.