Trait là gì?

Noun Php

PHP chỉ hỗ trợ đơn kế thừa (single inheritance) nghĩa là một lớp con (child class) chỉ có thể kế thừa từ một lớp (parent class) cha duy nhất. Vì vậy, điều gì sẽ xảy ra nếu một lớp (class) cần kế thừa nhiều hành vi (behaviorr) ? Trait sẽ giải quyết vấn đề này.

Trait được sử dụng để khai báo các phương thức (method) có thể được sử dụng trong nhiều lớp. Các trait có thể có các phương thức và phương thức trừu tượng (abstract method) có thể được sử dụng trong nhiều lớp và các phương thức có thể có bất kỳ phạm truy cập nào (access modifier) như public, private hoặc protected. Các trait được khai báo với từ khóa (keyword) trait:


<?php
trait TraitName {
  // some code...
}
?>

Để sử dụng một trait trong một lớp thì chúng ta sử dụng từ khóa use:


<?php
class MyClass {
  use TraitName;
}
?>

Hãy xem một ví dụ:


<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Ở đây, chúng tôi khai báo một trait: message1. Sau đó, chúng ra tạo một lớp: Welcome. Lớp sử dụng trait và tất cả các phương thức trong trait sẽ có sẵn trong lớp. Nếu các lớp khác cần sử dụng hàm msg1(), chỉ cần sử dụng trait message1 trong các lớp đó. Điều này làm giảm sự trùng lặp mã (code duplication) bởi vì không cần phải khai báo lại cùng một phương thức.

Noun Graph theory

Trong lý thuyết đồ thị (graph theory), một trail được định nghĩa là một walk mở (open walk) trong đó các đỉnh (vertex) có thể lặp lại nhưng các cạnh (edge) không được phép lặp lại.

Learning English Everyday