Interface là gì? Cách dùng interface trong PHP

Trong lập trình hướng đối tượng chắc hẳn chúng ta đã nghe nhiều về Interface. Vậy interface là gì ? Nếu vẫn chưa nắm được khái niệm này bạn hãy đọc hết bài này nhé

Interface là gì?

Interface trong hướng đối tượng là một khuôn mẫu, giúp cho chúng ta tạo ra bộ khung cho một hoặc nhiều đối tượng và nhìn vào interface thì chúng ta hoàn toàn có thể xác định được các phương thức và các thuộc tính cố định (hay còn gọi là hằng) sẽ có trong đối tượng implement nó.

Cách dùng interface trong PHP

Cú pháp khai báo interface trong PHP:

interface InterfaceName
{
    //code
}

Trong đó: InterfaceName là tên của interface các bạn muốn đặt.

Ví dụ : Mình sẽ tạo ra interface Animal.

interface Animal
{
    //code
}

Tính chất của interface.

-Các tính chất của interface:

  • Interface không phải là một đối tượng.
  • Trong interface chúng ta chỉ được khai báo phương thức chứ không được định nghĩa chúng.
  • Trong interface chúng ta có thể khai báo được hằng nhưng không thể khai báo biến.
  • Một interface không thể khởi tạo được (vì nó không phải là một đối tượng).
  • Các lớp implement interface thì phải khai báo và định nghĩa lại các phương thức có trong interface đó.
  • Một class có thể implement nhiều interface.
  • Các interface có thể kế thừa lẫn nhau.

Ví dụ cách dùng interface trong PHP

VÍ DỤ 1: Chỉ được khai báo phương thức chứ không được định nghĩa chúng trong interface.

interface DongVat
{
    //đúng vì chúng ta chỉ khai báo phương thức trong interface
    public function setName();

    //Sai vì chúng ta không được định nghĩa phương thức trong interface
    public function getName()
    {
        //
    }
}

VÍ DỤ 2: Trong interface chúng ta chỉ được khai báo hằng không thể khai báo biến.

interface DongVat
{
    //đúng vì trong interface có thể khai báo hằng
    const CONNGUOI = False;

    //Sai vì trong interface không thể khai báo biến
    public $name;

}

VÍ DỤ 3: Một interface không thể khởi tạo được.

interface DongVat
{
//
}

//sai vì interface không thể khởi tạo được
$dongvat = new DongVat();

VÍ DỤ 4: Các lớp implement lại interface thì phải khai báo và định nghĩa lại các phương thức có trong interface.

interface DongVat
{
    public function getName();
}

//Class này đúng vì đã khai báo và định nghĩa lại phương thức getName
//trong interface

class ConTrau implements DongVat
{
    private $name;

    public function getName()
    {
        return $this->name;
    }
}

//Class này sai vì chưa khai báo và định nghĩa lại phương thức getName
//trong interface

class ConBo implements DongVat
{
    private $name;

    public function setName($name)
    {
        $this->name = $name;
    }
}

VÍ DỤ 5: Một class có thể implement nhiều interface.

interface DongVat
{
    public function getName();
}

interface ConTrau
{
    public function checkSung();
}

class ConNghe implements DongVat, ConTrau
{
    private $name;

    const SUNG = false;

    public function getName()
    {
        return $this->name;
    }

    public function checkSung()
    {
        return self::SUNG;
    }
}

VÍ DỤ 6 : interface có thể kế thừa lẫn nhau.

interface DongVat
{
    public function getName();
}

interface ConTrau extends Dongvat
{
    public function checkSung();
}

class ConNghe implements ConTrau
{
    private $name;
    const SUNG = false;

    public function getName()
    {
        return $this->name;
    }

    public function checkSung()
    {
        return self::SUNG;
    }
}

Tổng kết:

Như vậy chúng ta hiểu rõ khái niệm interface là gì và cách dùng interface trong PHP rồi phải không. Trong oop còn 1 khái niệm hay được so sánh với interface đó là Abstract class. Trong bài so sánh abstract class và interface, khi nào dùng chúng mình đã đề cập rất rõ ràng về khi nào dùng chúng các bạn có thể tham khảo ở linh trên nhé. Chúc các bạn code tốt :))