Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Các phương thức ma thuật (Magic Methods) trong PHP

Giới thiệu

Phương thức ma thuật (Magic methods) trong PHP là các phương thức đặc biệt nhằm thực hiện các tác vụ cụ thể. Các phương thức này được đặt tên với tiền tố hai dấu gạch dưới (__). Tất cả tên hàm này được dành riêng và không thể sử dụng cho mục đích khác ngoài chức năng ma thuật liên quan. Phương thức ma thuật trong một lớp phải được khai báo public. Chúng đóng vai trò như các bộ chặn (interceptors) được gọi tự động khi các điều kiện nhất định được đáp ứng.

Dưới đây là danh sách các phương thức ma thuật hiện có trong PHP:

__sleep

public __sleep(): array

Phương thức serialize() trong lớp kiểm tra xem có hàm tên __sleep() không. Nếu có, hàm đó được thực thi trước khi serialize. Nó phải trả về một mảng chứa tên của tất cả biến của đối tượng đó cần được serialize.

__wakeup

public __wakeup(): void

Phương thức unserialize() kiểm tra sự tồn tại của hàm __wakeup(). Nếu có, hàm này có thể tái tạo các tài nguyên mà đối tượng có thể có.

__serialize

public __serialize(): array

serialize() cũng kiểm tra phương thức __serialize(). Nếu có, nó được thực thi trước khi serialize. Phải xây dựng và trả về một mảng liên hợp các cặp khóa/giá trị đại diện cho dạng serialize của đối tượng.

__unserialize

public __unserialize(array $data): void

unserialize() cũng kiểm tra __unserialize(). Nếu có, nó sẽ nhận mảng đã khôi phục từ __serialize(). Sau đó có thể khôi phục các thuộc tính của đối tượng từ mảng đó.

__toString

public __toString(): string

Phương thức __toString() mô tả biểu diễn chuỗi của đối tượng. Ví dụ: echo $obj; sẽ in gì. Phương thức này phải trả về một chuỗi.

__invoke

__invoke([$...]): mixed

Phương thức này được gọi khi script cố gắng gọi một đối tượng như một hàm.

__set_state

static __set_state(array $properties): object

Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export(). Nó nhận một tham số là mảng chứa các thuộc tính được xuất dưới dạng array('property' => value, ...).

__debugInfo

__debugInfo(): array

Phương thức này được gọi tự động khi var_dump() thực thi để dump một đối tượng, nhằm lấy các thuộc tính nên hiển thị. Nếu không định nghĩa, tất cả thuộc tính public, protected, private sẽ được hiển thị.

Các phương thức nạp chồng thuộc tính

__set

public __set(string $name, mixed $value): void

__set() chạy khi ghi dữ liệu vào thuộc tính không thể truy cập (protected/private) hoặc không tồn tại.

__get

public __get(string $name): mixed

__get() dùng để đọc dữ liệu từ thuộc tính không thể truy cập hoặc không tồn tại.

__isset

public __isset(string $name): bool

__isset() được kích hoạt bởi isset() hoặc empty() trên thuộc tính không thể truy cập hoặc không tồn tại.

__unset

public __unset(string $name): void

__unset() được gọi khi unset() dùng trên thuộc tính không thể truy cập hoặc không tồn tại.