PHP OOP

PHP OOP Traits

PHP OOP Traits

Trong PHP, 1 class chỉ có thể đơn kế thừa (single inheritance), để khắc phục vấn đề này, chúng ta sử dụng Traits

Traits

  • Được sử dụng để khai báo các phương thức (methods) có thể sử dụng trong nhiều class.
  • Giảm code lặp lại.
  • Không thể được khởi tạo (không thể tạo đối tượng – object từ traits).
  • Có thể có các phương thức (method) và các phương thức trừu tượng (abstract methods).
  • Các phương thức có thể truy cập theo public|private|protected ( visibility ).

Khai báo Traits

Trong PHP, traits được khai báo bằng từ khóa Trait


Trait MyTrait { ... }

Sử dụng Trait trong Class

Để sử dụng trait trong 1 classs, tên của trait phải được viết bên trong class và sử dụng từ khóa use


class MyClass {
	use MyTrait;
}

Ví dụ về Trait

Cùng tạo 2 trait và sử dụng chúng bên trong class để xem trait hoạt động thế nào

Tip: sử dụng dấu phẩy khi muốn sử dụng nhiều trait trong 1 class.

PHP Traits Example


<?php
Trait Hello {
	public function hello() {
		echo "Hello";
	}
}
Trait World {
	public function world() {
		echo "World";
	}
}
class MyClass {
	use Hello, World;
}
$obj = new MyClass();
$obj -> hello();
$obj -> world();

Như các bạn thấy:

  • Đầu tiên ta khai báo 2 traint là HelloWorld.
  • Sau đó tạo 1 class là MyClass
  • Bằng cách sử dụng 2 trait trong class, toàn bộ các phương thức trong trait sẽ có thể sử dụng trong class.
  • Vì vậy, ta có thể gọi các phương thức $obj->hello()$obj->world() .

Nếu có 1 hay nhiều class muốn sử dụng function hello() như vậy, rất đơn giản là ta chỉ việc sử dụng trait Hello bên trong class đó. Việc này giảm code lặp lại và không cần phải khai báo lại 1 phương thức tương tự nhiều lần.

Mặc dù, chúng ta đã chúng ta sử dụng 2 trait trong ví dụ trên, nhưng nếu bạn đã sử dụng kế thừa cho việc này, thì việc mở rộng nhiều class là điều không thể

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Close