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.
Nội dung chính ShowShow
- 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.
- Ví dụ #1 giấc ngủ và thức dậy
- __toString[]
- __set_state[]
- __debugInfo[]
- Phương pháp __ __ trong PHP là gì?
- Phương pháp đặt trong PHP là gì?
- __ cuộc gọi [] trong PHP là gì?
- Ý nghĩa đặc biệt của __ giấc ngủ và __ thức dậy là gì?
Thận trọng
Tất cả các tên phương thức bắt đầu bằng
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }05 đượ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à
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }06, nếu không thì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 đượ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 [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 is emitted. Prior to PHP 8.0.0, no diagnostic was emitted for the magic methods __sleep[], __wakeup[], __serialize[], __unserialize[], and __set_state[].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 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à
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }06, nếu không thì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 đượ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 [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 is emitted. Prior to PHP 8.0.0, no diagnostic was emitted for the magic methods __sleep[], __wakeup[], __serialize[], __unserialize[], and __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.
Ví dụ #1 giấc ngủ và thức dậy __sleep[]: array
Phương pháp __ __ trong PHP là gì? __wakeup[]: void
Phương pháp đặt trong PHP là gì? 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 string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
11 is serialized and string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
12 is
issued.
__ cuộc gọi [] trong PHP là gì?:
Ý nghĩa đặc biệt của __ giấc ngủ và __ thức dậy là gì?
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }12 level error. Use __serialize[] instead.
Thận trọng
Tất cả các tên phương thức bắt đầu bằng
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }05 đượ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.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.
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
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }17
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }0
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }1
Ví dụ #1 giấc ngủ và thức dậy
Phương pháp __ __ trong PHP là gì? __serialize[]: array
Phương pháp đặt trong PHP là gì? __unserialize[array
__ cuộc gọi [] trong PHP là gì?voidÝ nghĩa đặc biệt của __ giấc ngủ và __ thức dậy là gì?
Thận trọngTypeError will be thrown.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ì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }11 sẽ được tuần tự hóa vàstring[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }12 được ban hành.: :Ghi chú:
__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
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }12. 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 __unserialize[]. If present, this function will be passed the restored array that was returned from __serialize[]. It may then restore the properties of the object from that array as appropriate. unserialize[] checks for the presence of a function with the magic name __unserialize[]. If present, this function will be passed the restored array that was returned from __serialize[]. It may then restore the properties of the object from that array as appropriate.
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ì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }11 sẽ được tuần tự hóa vàstring[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }12 được ban hành.: :Ghi chú:
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ì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }11 sẽ được tuần tự hóa vàstring[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }12 được ban hành.: :Ghi chú:
__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 string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
12. Sử dụng __serialize [] thay thế.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }17
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }5
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }6
__toString[]
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 __unserialize[]. If present, this function will be passed the restored array that was returned from __serialize[]. It may then restore the properties of the object from that array as appropriate. __toString[]: string
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.__toString[]: string
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ó.
Cảnh báostring if possible and if strict typing is disabled.
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à
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }06, nếu không thì
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07 đượ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 [].string if possible and if strict typing is disabled. Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended.
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.Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended. string, otherwise an Error is thrown.
__s ngủ [] và __wakeup []string, otherwise an Error is thrown. string, otherwise a fatal
public__s ngủ []: mảngstring, otherwise a fatal 8 is emitted.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ó.
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à string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
06, nếu không thì string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
07 đượ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 [].string if possible and if strict typing is disabled.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }9
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }5
object[C]#1 [1] { ["propSquared"]=> int[1764] }1
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.Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended.
__invoke[]
__s ngủ [] và __wakeup []string, otherwise an Error is thrown.
public__s ngủ []: mảngstring, otherwise a fatal 2]: hỗn hợp[object[C]#1 [1] { ["propSquared"]=> int[1764] }2]: mixed
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }8 is emitted.
Không thể ném một ngoại lệ từ trong một phương thức __tostring [] trước PHP 7.4.0. Làm như vậy sẽ dẫn đến một lỗi nghiêm trọng.
object[C]#1 [1] { ["propSquared"]=> int[1764] }3
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.Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended.
__s ngủ [] và __wakeup []string, otherwise an Error is thrown.
public__s ngủ []: mảngstring, otherwise a fatal 2]: hỗn hợpobject[C]#1 [1] { ["propSquared"]=> int[1764] }4
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }5
object[C]#1 [1] { ["propSquared"]=> int[1764] }6
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.Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }7
__set_state[]
__s ngủ [] và __wakeup []string, otherwise an Error is thrown.
public__s ngủ []: mảngstring, otherwise a fatal __set_state[arrayobject[C]#1 [1] { ["propSquared"]=> int[1764] }7]: object
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }8 is emitted. var_export[].
Không thể ném một ngoại lệ từ trong một phương thức __tostring [] trước PHP 7.4.0. Làm như vậy sẽ dẫn đến một lỗi nghiêm trọng.
Ví dụ #3 Ví dụ đơn giản
object[C]#1 [1] { ["propSquared"]=> int[1764] }9
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }050
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }051
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.Stringable interface, and will thus pass type checks for that interface. Explicitly implementing the interface anyway is recommended.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }
__s ngủ [] và __wakeup []string, otherwise an Error is thrown.
public__s ngủ []: mảngstring, otherwise a fatal 2]: hỗn hợp: When exporting an object, var_export[] does not check whether __set_state[] is implemented by the object's class, so re-importing objects will result in an Error exception, if __set_state[] is not implemented. Particularly, this affects some internal classes. It is the responsibility of the programmer to verify that only objects will be re-imported, whose class implements __set_state[].
__debugInfo[]
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.[]: array[]: array
Ví dụ #4 sử dụng __invoke []var_dump[] when dumping an object to get the properties that should be shown. If the method isn't defined on an object, then all public, protected and private properties will be shown. var_dump[] when dumping an object to get the properties that should be shown. If the method isn't defined on an object, then all public, protected and private properties will be shown.
Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }052
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }5
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }054
Ví dụ trên sẽ xuất ra:
object[C]#1 [1] { ["propSquared"]=> int[1764] }
__invoke [
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }02]: hỗn hợp ¶2]: hỗn hợp ¶
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }055
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }056
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }057
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }058
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }059
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }060
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Ví dụ #4 sử dụng __invoke [] ¶ ¶
Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }062
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }063
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }064
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }065
Ví dụ trên sẽ xuất ra:
__invoke [7]: Đối tượng ¶string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
02]: hỗn hợp ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }066
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }067
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }068
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }069
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
Ví dụ #4 sử dụng __invoke [] ¶8. ¶Static__set_state [Array
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }070
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }071
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }072
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }073
string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
07]: Đối tượng ¶ ¶
Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }074
Tham số duy nhất của phương pháp này là một mảng chứa các thuộc tính được xuất ở dạng ¶
string[60] "A::__set_state[array[
'var1' => 5,
'var2' => 'foo',
]]"
object[A]#2 [2] {
["var1"]=>
int[5]
["var2"]=>
string[3] "foo"
}
08. ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }075
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }076
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }077
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }078
Ví dụ #6 Sử dụng __set_state [] ¶
Lưu ý: Khi xuất một đối tượng, var_export [] không kiểm tra xem __set_state [] có được thực hiện bởi lớp của đối tượng hay không, do đó, việc nhập lại các đối tượng sẽ dẫn đến ngoại lệ lỗi, nếu __set_state [] không được triển khai. Đặc biệt, điều này ảnh hưởng đến một số lớp nội bộ. Trách nhiệm của lập trình viên là xác minh rằng chỉ các đối tượng sẽ được thực hiện lại, có lớp thực hiện __set_state []. ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }079
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }110
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }111
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }112
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }113
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }114
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }115
__debuginfo []: mảng ¶
Phương thức này được gọi bằng var_dump [] khi bán một đối tượng để có được các thuộc tính cần được hiển thị. Nếu phương thức không được xác định trên một đối tượng, thì tất cả các thuộc tính công khai, được bảo vệ và riêng tư sẽ được hiển thị. ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }116
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }117
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }118
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }119
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }120
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }121
Ví dụ #7 Sử dụng __debuginfo [] ¶
Jon tại Webignition Dot Net ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }122
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }123
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }124
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }125
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }126
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }127
14 năm trước ¶
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }128
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }129
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }120
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }121
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }122
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }123
Ví dụ #4 sử dụng __invoke [] ¶ ¶
Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }124
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }125
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }126
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }127
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Ví dụ trên sẽ xuất ra:
__invoke [7]: Đối tượng ¶Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }129
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }170
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Tham số duy nhất của phương pháp này là một mảng chứa các thuộc tính được xuất ở dạng ¶
Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }172
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }173
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }174
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }175
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }176
Tham số duy nhất của phương pháp này là một mảng chứa các thuộc tính được xuất ở dạng ¶
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }177
Ví dụ #4 sử dụng __invoke [] ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }179
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }00
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Ví dụ #4 sử dụng __invoke [] ¶ ¶
Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }02
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }03
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }175
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }05
Ví dụ trên sẽ xuất ra:
__invoke [7]: Đối tượng ¶Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }06
Ví dụ trên sẽ xuất ra:
__invoke [7]: Đối tượng ¶Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }08
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Tham số duy nhất của phương pháp này là một mảng chứa các thuộc tính được xuất ở dạng ¶
Jon tại Webignition Dot Net ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }10
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }11
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }175
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }13
14 năm trước ¶
JSNELL tại E-Normous Dot Com ¶ ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }14
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }15
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }16
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }17
13 năm trước ¶
ctamayo tại sitecraftting dot com ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }18
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }19
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }20
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }21
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }22
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }23
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }24
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }25
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }26
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }27
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }28
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
14 năm trước ¶
JSNELL tại E-Normous Dot Com ¶ ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }30
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }31
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }120
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }33
13 năm trước ¶
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }34
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }35
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }36
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }37
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }38
Ví dụ #4 sử dụng __invoke [] ¶ ¶
Phương thức này được gọi bằng var_dump [] khi bán một đối tượng để có được các thuộc tính cần được hiển thị. Nếu phương thức không được xác định trên một đối tượng, thì tất cả các thuộc tính công khai, được bảo vệ và riêng tư sẽ được hiển thị. ¶
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }39
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }40
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }41
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }42
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }43
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }44
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }25
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }46
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }47
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }48
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }49
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }25
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }51
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }52
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }53
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }54
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
ctamayo tại sitecraftting dot com ¶ ¶
__debuginfo []: mảng
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }56
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }57
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }58
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }59
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Phương thức này được gọi bằng var_dump [] khi bán một đối tượng để có được các thuộc tính cần được hiển thị. Nếu phương thức không được xác định trên một đối tượng, thì tất cả các thuộc tính công khai, được bảo vệ và riêng tư sẽ được hiển thị. ¶ ¶
17 năm trước
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }61
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }62
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }122
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }64
Smiley tại Hellospambot Dot Chillerlan Dot Net ¶ ¶
Ví dụ #5 sử dụng __invoke []
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }65
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }66
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }67
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }68
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }69
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }061
Static__set_state [Array
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }07]: Đối tượng ¶7]: Đối tượng ¶
Phương thức tĩnh này được gọi cho các lớp được xuất bởi var_export [].
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }71
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }72
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }175
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }74
kguest tại php dot net ¶ ¶ ¶
Phương thức __invoke [] được gọi khi một tập lệnh cố gắng gọi một đối tượng là một hàm.
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }75
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }76
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }77
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }78
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }175Ví dụ #4 sử dụng __invoke []
Ví dụ #5 sử dụng __invoke [] ¶ ¶
5 năm trước
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }81
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }82
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }83
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }84
string[60] "A::__set_state[array[ 'var1' => 5, 'var2' => 'foo', ]]" object[A]#2 [2] { ["var1"]=> int[5] ["var2"]=> string[3] "foo" }85
__Function__ và __method__ như trong Php 5.0.4 là như vậy. __Function__ chỉ trả về tên của hàm. trong khi __method__ trả về tên của lớp cùng với tên của hàm.returns the name of the class alongwith the name of the function.returns the name of the class alongwith the name of the function.
Trong php __set [] được sử dụng khi giá trị được gán cho biến không xác định của lớp và __get [] được sử dụng khi giá trị từ biến không xác định sẽ được đọc.__Set [] được chạy khi ghi dữ liệu vào các thuộc tính không thể truy cập.Phương thức ma thuật __get [] đọc dữ liệu từ các thuộc tính không thể truy cập.$ user = new myClass [];
Phương thức quá tải ¶ __call [] được kích hoạt khi gọi các phương thức không thể truy cập trong bối cảnh đối tượng.__callstatic [] được kích hoạt khi gọi các phương thức không thể truy cập trong bối cảnh tĩnh.Đối số $ name là tên của phương thức được gọi.triggered when invoking inaccessible methods in an object context. __callStatic[] is triggered when invoking inaccessible methods in a static context. The $name argument is the name of the method being called.triggered when invoking inaccessible methods in an object context. __callStatic[] is triggered when invoking inaccessible methods in a static context. The $name argument is the name of the method being called.
__Sleep được cho là sẽ trả về một mảng tên của tất cả các biến của một đối tượng cần được tuần tự hóa.Ý định của nó là thiết lập lại các tài nguyên và những thứ khác cần thiết để được khởi tạo khi không xác định.__wakeup in turn will be executed by unserialize if it is present in class. It's intention is to re-establish resources and other things that are needed to be initialized upon unserialization. __wakeup in turn will be executed by unserialize if it is present in class. It's intention is to re-establish resources and other things that are needed to be initialized upon unserialization.