06/04/2021, 14:45

Bài 07: Anonymous Classes trong PHP7 - ự học PHP7

Trước đây để khởi tạo mới một đối tượng thì bắt buộc ta phải khai báo class trước, điều này rất rõ ràng nhưng lại không đáp ứng được một số trường hợp trong thực tế, vì vậy Anonymous Classes ra đời. Để phân biệt class thông thường và Anonymous Class thì trước tiên chúng ta tìm hiểu cú pháp class ...

Trước đây để khởi tạo mới một đối tượng thì bắt buộc ta phải khai báo class trước, điều này rất rõ ràng nhưng lại không đáp ứng được một số trường hợp trong thực tế, vì vậy Anonymous Classes ra đời.

Để phân biệt class thông thường và Anonymous Class thì trước tiên chúng ta tìm hiểu cú pháp class thông thường đã nhé.

1. Tạo class các phiên bản trước PHP7

Dưới đây là một ví dụ tạo và sử dụng class trong các phiên bản trước PHP7.

class Animal{
    function show($message)
    {
        echo $message;
    }
}

$animal = new Animal();
$animal->show('Đây là động vật hoang dã! - Zaidap.com.net');

Chạy ví dụ lên sẽ xuất hiện dòng chữ "Đây là động vật hoang dã! - Zaidap.com.net". Điều này quá bình thường rồi, nhưng bạn hãy xem ví dụ ở phần 2 dưới đây.

2. Anonymous Classes trong PHP7

Với ví dụ ở phần 1 trên thì mình sẽ viết lại dưới dạng Anonymous Class như sau:

$animal = new class{
    function show($message)
    {
        echo $message;
    }
};

$animal->show('Đây là động vật hoang dã! - Zaidap.com.net');

Chạy lên kết quả cũng không thay đổi gì. Như vậy để khai báo một Anonymous Class thì ta dùng cú pháp sau:

new class{
    // Danh sách methods
};

3. Một số ví dụ Anonymous Class trong PHP7

Sau đây là một số ví dụ cách sử dụng Anonymous Class rất hay mà bạn nên biết.

Sử dụng là một tham số

// Class con
class Dog{
    public $animal;
    function setAnimal($animal)
    {
        $this->animal = $animal;
    }
}

// Class con với tham số truyền vào là một Anonynous Class
$dog = new Dog();
$dog->setAnimal(new class {
    function show($message)
    {
        echo $message;
    }
});
$dog->animal->show('Đây là con cờ hó!');

Anonymous Class có kế thừa

class Animal{
    function eat($meal){
    }
}

$dog = new class extends Animal{
    function eat($meal){
        echo 'Con chó đang ăn trưa với món ' . $meal;
    }
};

$dog->eat('Sốt cà chua');

Nếu bạn đã từng tìm hiêu qua Anonymous function trong jQuery hoặc trong PHP thì sẽ thấy nó rất dễ hiều.

4. Ưu điểm và nhược điểm của Anonymous Class

Ưu điểm: Việc sử dụng Anonymous Class cũng có những ưu điểm và nhược điểm. Cá nhân mình nhận thấy khi ban khởi tạo một Anonymous Class thì tốc độ xử lý sẽ nhanh hơn bởi bộ nhớ chỉ lưu trữ một lần cho class đó mà thôi. Ngoài ra chúng ta có thể tạo class một cách nhanh chóng không mất nhiều thời gian.

Nhược điểm: Việc sử dụng Anonymous Class chỉ dùng cho những trường hợp xử lý đơn giản bởi nó không có tính chất tái sử dụng, thứ hai nữa là khó nâng cấp và bảo trì đối với những thể loại này.

5. Lời kết

Như vậy một Anonymous Class thực chất là cách khai báo và sử dụng nhanh một class, khi sư dụng cách này bạn sẽ không có tính mở rộng mà chỉ mang tính chất sử dụng tạm thời, vì vậy phải cân nhắc khi sử dụng loại class này. Tuy nhiên trong một số trường hợp Anonymous Class lại được sử dụng vì tính nhanh gọn của nó.

Trần Trung Dũng

15 chủ đề

2610 bài viết

0