Phương pháp 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.
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;
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" } 1Ví dụ #1 giấc ngủ và thức dậy
__Serialize () và __unSerialize () __serialize(): array
public__serialize (): mảng __unserialize(array string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 2): void
public__unSerialize (mảng string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 2): VOID checks if the class has a function with the magic name __serialize(). If so, that function is executed prior to any serialization. It must construct and return an associative array of key/value pairs that represent the serialized form of the object. If no array is returned a TypeError 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ì null sẽ được tuần tự hóa và E_NOTICE đượ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 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 __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ì null sẽ được tuần tự hóa và E_NOTICE đượ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ì null sẽ được tuần tự hóa và E_NOTICE đượ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 E_NOTICE. Sử dụng __serialize () thay thế.
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;
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. __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á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 ().string if possible and if strict typing is disabled.
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 string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 8 is emitted.
Cảnh báo
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
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) } 1Ví dụ trên sẽ xuất ra:
__invoke()
__invoke (object(C)#1 (1) { ["propSquared"]=> int(1764) } 2): hỗn hợp( object(C)#1 (1) { ["propSquared"]=> int(1764) } 2): mixed
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 ()
object(C)#1 (1) { ["propSquared"]=> int(1764) } 3
Ví dụ trên sẽ xuất ra:
__invoke (object(C)#1 (1) { ["propSquared"]=> int(1764) } 2): hỗn hợp
object(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) } 6Ví dụ trên sẽ xuất ra:
Array ( [0] => Array ( [id] => 3 [first_name] => Alice [last_name] => Gustav ) [1] => Array ( [id] => 2 [first_name] => Bob [last_name] => Filipe ) [2] => Array ( [id] => 1 [first_name] => John [last_name] => Do ) ) Array ( [0] => Array ( [id] => 1 [first_name] => John [last_name] => Do ) [1] => Array ( [id] => 2 [first_name] => Bob [last_name] => Filipe ) [2] => Array ( [id] => 3 [first_name] => Alice [last_name] => Gustav ) )
__set_state()
__invoke (object(C)#1 (1) { ["propSquared"]=> int(1764) } 2): hỗn hợp __set_state(array object(C)#1 (1) { ["propSquared"]=> int(1764) } 7): object
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.var_export().
Ví dụ #4 sử dụng __invoke ()
Ví dụ #5 sử dụng __invoke ()
object(C)#1 (1) { ["propSquared"]=> int(1764) } 9
__0
__1Ví dụ trên sẽ xuất ra:
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" }
__invoke (object(C)#1 (1) { ["propSquared"]=> int(1764) } 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
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.
Ví dụ #5 sử dụng __invoke ()
__2
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 5
__4Ví dụ trên sẽ xuất ra:
object(C)#1 (1) { ["propSquared"]=> int(1764) }
__invoke (object(C)#1 (1) { ["propSquared"]=> int(1764) } 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.
__5
__6
__7
__8
__9
public0
public1Ví dụ #4 sử dụng __invoke () ¶
Ví dụ #5 sử dụng __invoke ()
public2
public3
public4
public5Static__set_state (Array object(C)#1 (1) { ["propSquared"]=> int(1764) } 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 ().
public6
public7
public8
public9Tham 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 object(C)#1 (1) { ["propSquared"]=> int(1764) } 8. ¶
Ví dụ #6 Sử dụng __set_state ()
E_WARNING0
E_WARNING1
E_WARNING2
E_WARNING3Lư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 (). ¶
__debuginfo (): mảng
E_WARNING4
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ị. ¶
Ví dụ #7 Sử dụng __debuginfo ()
E_WARNING5
E_WARNING6
E_WARNING7
E_WARNING8Jon tại Webignition Dot Net ¶
14 năm trước
E_WARNING9
null0
null1
null2
null3
null4
null5JSNELL tại E-Normous Dot Com ¶ ¶
13 năm trước
null6
null7
null8
null9
E_NOTICE0
E_NOTICE1ctamayo tại sitecraftting dot com ¶
2 năm trước
E_NOTICE2
E_NOTICE3
E_NOTICE4
E_NOTICE5
E_NOTICE6
E_NOTICE7kguest 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.
E_NOTICE8
E_NOTICE9
E_NOTICE0
E_NOTICE1
E_NOTICE2
E_NOTICE3Ví dụ #4 sử dụng __invoke () ¶
Ví dụ #5 sử dụng __invoke ()
E_NOTICE4
E_NOTICE5
E_NOTICE6
E_NOTICE7
public1Static__set_state (Array object(C)#1 (1) { ["propSquared"]=> int(1764) } 7): Đối tượng ¶
__debuginfo (): mảng
E_NOTICE9
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;0
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ị. ¶
__debuginfo (): mảng
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;2
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;3
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;4
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;5
class Connection
{
protected $link;
private $dsn, $username, $password;6
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ị. ¶
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.
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;7
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;8
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;9
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 00
public1Ví 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
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;5
Static__set_state (Array object(C)#1 (1) { ["propSquared"]=> int(1764) } 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
Static__set_state (Array object(C)#1 (1) { ["propSquared"]=> int(1764) } 7): Đối tượng ¶
__debuginfo (): mảng
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
public1Phươ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ị. ¶
2 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" } 10
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 11
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;5
kguest tại php dot net ¶ ¶
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" } 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" } 17jeffxlevy tại gmail dot com ¶
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" } 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
public1kguest tại php dot net ¶ ¶
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" } 30
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 31
E_NOTICE0
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 33jeffxlevy tại gmail dot com ¶
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" } 38Ví dụ #4 sử dụng __invoke () ¶
13 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" } 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
public1ctamayo 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
public1Phươ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
E_NOTICE2
string(60) "A::__set_state(array( 'var1' => 5, 'var2' => 'foo', ))" object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" } 64Smiley 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
public1Static__set_state (Array object(C)#1 (1) { ["propSquared"]=> int(1764) } 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
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;5
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
<?php
class Connection
{
protected $link;
private $dsn, $username, $password;5
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