⊗ppOpTrInr 77 of 107 menu

Traits trong OOP PHP

Như bạn đã biết, trong PHP không thể kế thừa từ nhiều lớp cùng một lúc, chỉ từ một lớp. Trước đây chúng ta đã học qua giải pháp cho vấn đề này: thay vì kế thừa, hãy sử dụng các đối tượng của lớp này bên trong các lớp khác.

Trong PHP còn có một cách khác. Nó nằm trong việc sử dụng traits. Một trait đại diện cho một tập hợp các thuộc tính và phương thức có thể được đưa vào một lớp khác. Khi đó, các thuộc tính và phương thức của trait sẽ được lớp coi như của chính nó.

Cú pháp của trait giống như của lớp, ngoại trừ việc tên trait cần được khai báo bằng từ khóa trait.

Không thể tạo một thể hiện của trait - traits chỉ dành để kết nối với các lớp khác. Việc kết nối tự nó được thực hiện bằng lệnh use, sau đó là tên của trait được kết nối, cách nhau bằng dấu cách. Lệnh này được viết ở đầu lớp.

Hãy xem ứng dụng của traits trong một ví dụ thực tế. Giả sử chúng ta có trait Helper này, chứa các thuộc tính private nameage, cũng như các getter của chúng:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Giả sử chúng ta cũng có lớp User này, trong constructor của nó, các thuộc tính nameage được thiết lập:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Bây giờ hãy thêm các getter cho các thuộc tính của lớp User của chúng ta. Chỉ là chúng ta sẽ không viết chúng trong chính lớp đó, mà chỉ cần kết nối trait Helper, trong đó các phương thức này đã được triển khai:

<?php class User { use Helper; // kết nối trait public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Sau khi kết nối trait, trong lớp của chúng ta sẽ xuất hiện các phương thức và thuộc tính của trait đó. Và chúng ta sẽ truy cập chúng như thể chúng là các phương thức và thuộc tính của chính lớp:

<?php $user = new User('john', 30); echo $user->getName(); // sẽ in ra 'john' echo $user->getAge(); // sẽ in ra 30 ?>

Triển khai lớp City với các thuộc tính name, age, population và các getter cho chúng. Hãy để lớp của chúng ta sử dụng trait Helper đã tạo để rút ngắn mã của nó.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối