Khai báo interface trong trong PHP
Interface là nơi liệt kê một danh sách các phương thức (public) để để một lớp bắt buộc phải triển khai chúng. Bản thân interface không triển khai một phương thức nào, nó chỉ khai báo tên các phương thức (tương tự phương thức abstract), nói cách khác tất cả các phương thức đều là abstract (mặc dù không dùng từ khóa abstract khi khai báo).
Định nghĩa giao diện dùng từ khóa interface, cú pháp tương tự class.
Ví dụ ILogger khai báo một giao diện.
interface ILogger { public function log($message); }
Triển khai giao diện implements interface
Một lớp cho biết nó sử dụng giao diện nào để triển khai thì dùng từ khóa implements sau đó liệt kê các giao diện sẽ triển khai. Trong lớp bắt buộc vào triển khai (định nghĩa) các phương thức mô tả trong interface
// FileLogger - triển khai giao diện ILogger class FileLogger implements ILogger{ public function log($message){ echo sprintf("Log %s to the file\n",$message); } } // DBLogger - triển khai giao diện ILogger class DBLogger implements ILogger{ public function log($message){ echo sprintf("Log %s to the database\n",$message); } }
Chú ý, một lớp có thể triển khai nhiều giao diện
class ClassName implements InterfaceName1, InterfaceName2 { }
Một interface cũng có thể kế thừa interface khác bằng từ khóa extends. Hoặc một vừa kế thừa lớp khác và triển khai các giao diện
interface InterfaceA { function method1(); } // InterfaceB kế thừa interfaceA // B có các phương thức quy định trong A interface InterfaceB extends InterfaceA { function method2(); } class ClassA { function method3() { } } // Lớp ClassB kế thừa ClassA và triển khai giao diện InterfaceB class ClassB extends ClassA implements InterfaceB { function method1() { // Implement method2() method. } function method2() { // Implement method2() method. } }