Bài 15: Template interface trong php

PHP nâng cao 25/01/2017 12:42 804
Interface là một khuôn mẫu mà trong nó chỉ chứa các phương thức ở dạng khai báo & không khai báo về thuộc tính hay thứ gì khác. Bởi vậy bất kỳ lớp nào sử dụng lớp interface đều phải định nghĩa các phương thức đã khai báo ở lớp interface, nếu cố tình không khai báo thì PHP sẽ báo lỗi, để sử dụng lớp interface bạn chỉ việc khai báo với từ khóa implements và một lớp có thể sử dụng nhiều interface cũng như vừa có thể kế thừa từ lớp khác và đồng thời sử dụng interface.

Cú pháp: interface [interfaceName]

Thoạt nhìn qua các ta thấy Interface rất giống với Abstract trong php ? Nhưng về bản chất bên trong hoàn toàn khác nhau. Interface không phải là một lớp cụ thể mà là một khuôn mẫu để cho một đối tượng implement nó, và đương nhiên là ta không thể tạo một biến Interface. Ngược lại lớp Abstract là một lớp cụ thể, có đầy đủ các tính chất của một đối tượng, có thể gọi, định nghĩa các hàm trong nó. Đối với hằng số ở lớp implement không được định nghĩa lại.

Một số điểm cần lưu ý khi làm việc với interface.

  • Lớp kế thừa không được định nghĩa lại hằng số đã được định nghĩa trong interface.
  • Định nghĩ đúng các hàm của lớp kế thừa như trong interface.
  • Định nghĩa đúng mức truy cập các hàm của lớp kế thừa như trong interface.
  • Một interface chứa các hành vi(Action) mà một class(lớp) triển khai.
  • Một interface có thể bao gồm bất cứ lượng phương thức nào.
  • Bạn không thể khởi tạo một interface.
  • Một interface không chứa bất cứ hàm contructor nào.
  • Tất cả các phương thức của interface đều là abstract.
  • Một interface không thể chứa một trường nào trừ các trường vừa static và final.
  • Một interface không thể kế thừa từ lớp, nó được triển khai bởi một lớp.
  • Một interface có thể kế thừa từ nhiều interface khác.

Ví dụ:

interface PrintTable
{
    // Phương thức In
    public function _print();
}
interface PrintColor
{
     // Phương thức thiết lập màu sắc
    public function _setcolor();
}

class Page
{
    // Phương thức setup bố cục
    public function PageSetup(){
        // Lệnh
    }
}
class A6 extends Page implements PrintTable,PrintColor{
    public function _print(){
        echo 'Phương thức in khổ giấy A6';
    }
    public function _setcolor(){
        echo 'Mãu chữ in khổ giấy A6';
    }
}
$a6 = new A6;
$a6->_print();

2. Tính chất kế thừa interface trong PHP

Interface trong php tuy không phải là một lớp chính hiệu nhưng nó cũng có một tính chất đó là tính kế thừa, nghĩa là một Interface A có thể kế thừa một Interface B thì lúc này đối tượng nào implement lớp A thì nó phải định nghĩa tất cả các hàm mà cả hai lớp A và B đã khai báo.

Ví dụ:

interface A{
    public function funcA();
}
interface B extends A{
    public function funcB();
}  
// Lớp này đúng vì nó khai báo đầy
// đủ các hàm trong A và B
class C implements B{
    public function funcA(){
        // Lệnh
    }
    public function funcB(){
        // Lệnh
    }
}
// Lớp này sai vì nó khai báo mỗi hàm funcA
class D implements B{
    public function funcA(){
        // Lệnh
    }
}

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.