Hướng dẫn what is __ set in php? - __ được đặt trong php là gì?

Các phương thức ma thuật là các phương thức đặc biệt ghi đè hành động mặc định của PHP khi một số hành động được thực hiện trên một đối tượng.

Thận trọng

Tất cả các tên phương thức bắt đầu bằng __ được dành riêng bởi PHP. Do đó, không nên sử dụng các tên phương thức đó trừ khi ghi đè hành vi của PHP.

Các tên phương thức sau được coi là phép thuật: __construct [], __destruct [], __call [], __callstatic [], __get [], __set [], __isset [], __unset [], __s ngủ [], __wakeup [] ], __unSerialize [], __ToString [], __invoke [], __set_state [], __clone [] và __debuginfo [].

Cảnh báo

Tất cả các phương thức ma thuật, ngoại trừ __construct [], __destruct [] và __clone [], phải được khai báo là public, nếu không thì E_WARNING được phát ra. Trước PHP 8.0.0, không có chẩn đoán nào được phát ra cho các phương thức ma thuật __sleep [], __wakeUp [], __serialize [], __unSerialize [] và __set_state [].E_WARNING is emitted. Prior to PHP 8.0.0, no diagnostic was emitted for the magic methods __sleep[], __wakeup[], __serialize[], __unserialize[], and __set_state[].

Cảnh báo

Tất cả các phương thức ma thuật, ngoại trừ __construct [], __destruct [] và __clone [], phải được khai báo là public, nếu không thì E_WARNING được phát ra. Trước PHP 8.0.0, không có chẩn đoán nào được phát ra cho các phương thức ma thuật __sleep [], __wakeUp [], __serialize [], __unSerialize [] và __set_state [].

Nếu khai báo loại được sử dụng trong định nghĩa của phương pháp ma thuật, chúng phải giống hệt với chữ ký được mô tả trong tài liệu này. Nếu không, một lỗi nghiêm trọng được phát ra. Trước Php 8.0.0, không có chẩn đoán nào được phát ra. Tuy nhiên, __construct [] và __destruct [] không được khai báo loại trả lại; Nếu không, một lỗi nghiêm trọng được phát ra.

__s ngủ [] và __wakeup [] __sleep[]: array

public__s ngủ []: mảng __wakeup[]: void

public__wakeup []: void checks if the class has a function with the magic name __sleep[]. If so, that function is executed prior to any serialization. It can clean up the object and is supposed to return an array with the names of all variables of that object that should be serialized. If the method doesn't return anything then null is serialized and E_NOTICE is issued.

serialize [] kiểm tra xem lớp có chức năng với tên ma thuật __s ngủ []. Nếu vậy, chức năng đó được thực thi trước khi có tuần tự hóa. Nó có thể làm sạch đối tượng và được cho là sẽ trả về một mảng với tên của tất cả các biến của đối tượng đó cần được tuần tự hóa. Nếu phương thức không trả về bất cứ điều gì thì null sẽ được tuần tự hóa và E_NOTICE được ban hành.:

Ghi chú:E_NOTICE level error. Use __serialize[] instead.

__Sle ngủ [] không thể trả lại tên của các thuộc tính riêng trong các lớp cha. Làm điều này sẽ dẫn đến lỗi cấp E_NOTICE. Sử dụng __serialize [] thay thế.

Việc sử dụng dự định của __s ngủ [] là thực hiện dữ liệu đang chờ xử lý hoặc thực hiện các tác vụ dọn dẹp tương tự. Ngoài ra, chức năng này rất hữu ích nếu một đối tượng rất lớn không cần được lưu hoàn toàn.unserialize[] checks for the presence of a function with the magic name __wakeup[]. If present, this function can reconstruct any resources that the object may have.

Ngược lại, unserialize [] kiểm tra sự hiện diện của một hàm với tên ma thuật __wakeUp []. Nếu có, chức năng này có thể xây dựng lại bất kỳ tài nguyên nào mà đối tượng có thể có.

Việc sử dụng dự định của __wakeUp [] là thiết lập lại bất kỳ kết nối cơ sở dữ liệu nào có thể bị mất trong quá trình tuần tự hóa và thực hiện các tác vụ tái tạo khác.

Bài Viết Liên Quan

Chủ Đề