Hướng dẫn dùng annomous trong PHP

Các hàm ẩn danh (anonymous function) là các hàm chỉ sử dụng duy nhất một lần. Nó có thể được định nghĩa vào bất cứ lúc nào, và thường gắn với một biến hoặc gán vào một hàm khác như một tham số . Các hàm này chỉ tồn tại trong phạm vi của biến mà nó được định nghĩa, vì vậy khi biến đó vượt ra ngoài phạm vi, thì hàm này cũng không còn nữa.

Nội dung chính

  • 1. Tạo class các phiên bản trước PHP7
  • 2. Anonymous Classes trong PHP7
  • 3. Một số ví dụ Anonymous Class trong PHP7
  • Sử dụng là một tham số
  • Anonymous Class có kế thừa
  • 4. Ưu điểm và nhược điểm của Anonymous Class
  • 5. Lời kết

Nội dung chính

  • 1. Tạo class các phiên bản trước PHP7
  • 2. Anonymous Classes trong PHP7
  • 3. Một số ví dụ Anonymous Class trong PHP7
  • Sử dụng là một tham số
  • Anonymous Class có kế thừa
  • 4. Ưu điểm và nhược điểm của Anonymous Class
  • 5. Lời kết

Cú pháp:

function (){
  // Chú ý không có tên hàm
}

Cách sử dụng hàm ẩn danh.

Bởi vì các hàm này không có tên, nên chúng ta không thể gọi nó như một chức năng thường xuyên. Thay vào đó ta phải gán nó vào một biến hoặc cho vào 1 hàm khác khác như là một tham số.

Ví dụ:

	

Xem ví dụ

Truyền tham số.

Xem ví dụ

Để sử dụng các hàm ẩn danh, chúng ta gán nó vào một biến và sau đó gọi là biến như là một function như trên. Hoặc sử dụng hàm ẩn danh như thế này.

Ví dụ:

Xem ví dụ
 

Hàm ẩn danh rất hữu dụng trong một số trường hợp, Đôi khi chúng ta không cần phải tạo hẳn một hàm cho ,một lần sử dụng duy nhất.

Thông thường, chúng ta sẽ cần một hàm để làm một công việc, nhưng nó không có nghĩa là chúng ta sẽ dùng nó trong phạm vi global. Thay vì có một hàm sử dụng một lần và sau đó bỏ đi để nó ở đó, chúng ta có thể sử dụng một hàm ẩn danh để thay thế.

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.

Hướng dẫn dùng annomous trong PHP

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

Để 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ã! - freetuts.net');

Chạy ví dụ lên sẽ xuất hiện dòng chữ "Đây là động vật hoang dã! - freetuts.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.

Bài viết này được đăng tại [free tuts .net]

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ã! - freetuts.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ó.