Sự khác biệt quan trọng giữa việc sử dụng trait và interface là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
190 lượt xem
PHP senior
  • Một trait về cơ bản là việc PHP thực hiện một mixin, và thực sự là một tập hợp các phương thức mở rộng có thể được thêm vào bất kỳ lớp nào thông qua việc bổ sung trait. Sau đó các phương thức này trở thành một phần của quá trình thực thi lớp đó, mà không cần sử dụng tính năng kế thừa.
  • Một interface định nghĩa một tập hợp các phương thức mà lớp thực thi phải thực hiện.
trait myTrait {
   function foo() { return "Foo!"; }
   function bar() { return "Bar!"; }
}
 
class MyClass extends SomeBaseClass {
   use myTrait; // Inclusion of the trait myTrait
}

PHP, giống như nhiều ngôn ngữ khác, sử dụng mô hình kế thừa đơn - nghĩa là một lớp có thể dẫn xuất từ nhiều interface, nhưng chỉ kế thừa từ một lớp. Tuy nhiên, một lớp PHP có thể bao gồm nhiều trait - điều này cho phép lập trình viên có thẻ include các phần có thể tái sử dụng - giống như việc có thể kế thừa từ nhiều lớp cơ sở.

{{login.error}}