PHP NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 13: Template 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.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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 = 'Freetuts.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()
    {
 
    }
}

3. Lời kết

Trong bài này các bạn phải phân biệt được hai khái niệm là lớp trừu tượng abstract interface trong php. Những ví dụ mình đưa ra chỉ là minh họa không có trung thực tế nhưng về cú pháp thì hoàn toàn đúng. Kiến thức mình cũng có hạn có gì sai sót mong các bạn bỏ qua.

Tổng hợp dữ liệu trong bài:

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top