Bài 42: Template interface trong php

Ngày đăng: 2024-04-14 15:45:46

Mục lục:

        1. Interface là gì ?

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

 

1. Interface là gì ?

Interface là một Template (khuôn mẫu), nó không phải là một lớp đối tượng mà chỉ là một bề nhìn bên ngoài mà nhìn vào đó ta có thể biết được tất cả các hàm của đối tượng implement nó.

Để khai báo một Interface ta dùng từ khóa interface để thay cho từ khóa class. Tất cả các hàm trong interface đểu ở dạng khai báo và không được định nghĩa (giống lớp abstract). Nếu một đối tượng implement một interface thì nó phải khai báo và định nghĩa tất cả các hàm trong Interface.

Thoạt nhìn qua các bạn thấy Interface rất giống với Abstract trong php đúng không nào? Câu trả lời là 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.

Ví dụ: Định nghĩa hằng số bị sai

interface A

{

    const ConstA = 'titoe.net';

}

  

// Lớp này sai vì không thể định nghĩa lại hằng

class B implements A

{

    const ConstA = 'Other Name';

}

  

// Lớp này đúng

class D implements A

{

}

 

Ví dụ: Định nghĩa hàm trong template bị sai

 

// Khai báo một Interface

interface DogTemplate

{

    // Hàm này đúng vì ta chỉ khai báo mà không có định nghĩa

    public function Run();

  

    // Hàm này sai vì ta đã định nghĩa cho nó

    public function Eat(){

  

    }

}


Ví dụ: Định nghĩa mức truy cập bị sai

 

 

// Template

interface DogTemplate

{

    public function Run();

  

    public function Eat();

}

  

// Lớp Dog

class Dog implements DogTemplate

{

    // Hàm này sai vì cấp độ truy cập

    // của hàm run bên template là public

    // mà trong hàm này ta lại khai báo là private

    private function Run(){

  

    }

  

    // Hàm này đúng

    public function Eat(){

  

    }

}


Ví dụ: Bị thiếu hàm

 

 

// Template

interface DogTemplate

{

    public function Run();

  

    public function Eat();

}

  

// Lớp Dog

// Sai vì thiếu hàm Run

class Dog implements DogTemplate

{

    public function Eat(){

  

    }

}

 

2.Tính 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()

    {

  

    }

  

    public function funcB()

    {

  

    }

}

  

// Lớp này sai vì nó khai báo mỗi hàm funcA

class D implements B

{

    public function funcA()

    {

  

    }

}

 

Về bài trước...

                                Bài tiếp theo...

 

 


Tài liệu lập trình PHP

Bài viết trong cùng chuyên mục

Góc games giải trí (chơi trực tiếp trên web) Đăng nhập (chơi có thưởng)



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Bắn bóng

Plapy Bird (NH.Đông)

Vượt chướng ngại vật

Vẽ hình cứu người

Game Phases

Game vui chơi có thưởng

Game bắn cá



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

7341