Hướng dẫn dùng example character trong PHP
1. Giới thiệuNếu là một lập trình viên PHP, chắc hẳn bạn đã từng ít nhất một lần sử dụng traits. Traits được giới thiệu từ PHP 5.4, là một cơ chế giúp ta tái sử dụng code trong các ngôn ngữ đơn kế thừa như PHP. Với traits, ta có thể nhóm các phương thức ta muốn thành một class và sử dụng các phương thức trong traits mà không cần phải kế thừa traits. Show Nội dung chính
Tiếp theo ta sẽ đi tìm hiểu về cách sử dụng và một số lưu ý khi sử dụng trait nhá. 2. Thứ tự ưu tiênĐầu tiên hãy tìm hiểu về thứ tự thực hiện các method khi sử dụng trait nhé. Ta có một ví dụ như sau:
Trong ví dụ trên ClassA đã extends ClassBase, đồng thời cũng sử dụng TraitA, cả ClassBase và TraitA đều có phương thức sayHello. Vậy khi một instance của ClassA gọi đến phương thức sayHello thì kết quả sẽ là gì ? Ta có thể thấy phương thức sayHello của TraitA đã được thực hiện, vậy phương thức của ClassBase đã bị ghi đè bởi phương thức của TraitA. Vậy khi ta thực hiện ghi đè phương thức sayHello trong ClassA thì sao ?
Ta thấy phương thức của ClassA đã ghi đè phương thức của trait. Vậy hãy chú ý, thứ tự ưu tiên khi sử dụng trait đó là: phương thức của class hiện tại > phương thức của trait > phương thức của class kế thừa. 3. Sử dụng nhiều trait và xử lý xung đột khi sử dụng nhiều traitNếu ta sử dụng nhiều trait và các trait này có cùng một phương thức giống nhau thì chuyện gì sẽ xảy ra, ta hãy xem ví dụ dưới đây.
Ở đây ClassA đã sử dụng cả TraitA và TraitB, cả hai trait này đều có phương thức sayHello, vậy khi instance của ClassA gọi đến phương thức này thì phương thức của trait nào sẽ được thực hiện ? Thật ra trong trường hợp này ta lại gặp lỗi như trên, vậy có cách nào để xử lý trong trường hợp này không ? Hãy xem tiếp dưới đây nhé.
Bằng cách sử dụng toán tử inseadOf ta có thể chỉ định phương thức của trait nào sẽ được thực hiện. Vậy nếu ta vẫn muốn sử dụng phương thức sayHello của TraitA thì sao ? Đây là lúc ta sử dụng toán tử as.
4. Thay đổi method visibilitySử dụng toán tử as ta cũng có thể thay đổi method visibility của các method mà ta dùng từ trait.
Ta cũng có thể tạo ra một alias method và thay đổi visibility của alias method này.
5. Kết hợp nhiều traitTrong trường hợp ta phải sử dụng nhiều trait, ta có thể gộp nhiều trait này thành một trait, sau đó ta sử dụng trait đã kết hợp này.
6. Các thành phần abstract và static trong traitTrong trait ta cũng có thể định nghĩa các thành phần abstract và static.
7. Property trong traitTrong một trait ta còn có thể định nghĩa các property. Nhưng hãy chú ý, khi property đã được định nghĩa trong trait thì class sử dụng trait này không thể định nghĩa một property cùng tên trừ khi cùng giá trị khởi tạo và visibility.
Điều tương tự cũng xảy ra khi ta định nghĩa cùng property ở hai trait khác nhau.
8. Tổng kếtTrên đây là một số kiến thức cơ bản về traits và một vài lưu ý khi sử dụng traits. Hi vọng có thể giúp ích cho mọi người trong công việc hằng ngày của mình. Cảm ơn mọi người đã đọc bài. Tham khảo: https://www.php.net/manual/en/language.oop5.traits.php |