The stdClass class is an internal reserved class of PHP. It has no member variables or member methods at the beginning, and all magic methods are set to NULL. You can use it to pass variable parameters, however, there are no methods that can be called. The stdClass class can be inherited, but it makes no sense to do so.
This class is a reserved PHP class, not the base class of all classes.
Copy codeThe Code is as follows:
<? Php
Class foo {}
$ Bar = new foo ();
Echo $ bar instanceof stdClass? 'Yes': 'no ';
// Output: no
Another example:
Copy codeThe Code is as follows:
<? Php
// CTest does not derive from stdClass
Class CTest {
Public $ property1;
}
$ T = new CTest;
Var_dump ($ t instanceof stdClass); // false
Var_dump (is_subclass_of ($ t, 'stdclass'); // false
Echo get_class ($ t). "\ n"; // 'ctest'
Echo get_parent_class ($ t). "\ n"; // false (no parent)
?>
Any forced conversion with (object) will get an instance of stdClass.
Understanding stdClass in PHP
StdClass became popular in PHP5. StdClass is also a reserved class of zend. StdClass is a base class of PHP,
Almost all classes inherit this class, so it can be new at any time, and this variable can be made an object. At the same time,
This base class has another special feature, that is, there is no method. All variables that use new stdClass,
It is impossible to use $ a-> test. The uniqueness of PHP5 objects. objects are called anywhere,
All are address-based, so the resource consumption is relatively less. When assigning values to other pages, it is directly modified instead of referencing a copy.
Most of the above definitions are correct, but a fatal diagnostic error: stdClass is a base class of PHP, and almost all classes inherit this class. Let's look at a simple example:
Copy codeThe Code is as follows:
Class EmptyClass {
}
$ Object = new EmptyClass ();
If ($ object instanceof stdClass ){
Echo 'yes ';
} Else {
Echo 'no ';
}
Run the code and output "no". This example fully demonstrates that the stdClass is not the base class of all classes. It is just a reserved class of PHP, or a role similar to the strlen function. Let's take a look at the implementation of the stdClass from the source code dimension. Its registration location is in the Zend/zend_buildin_functions.c file. As follows:
Copy codeThe Code is as follows:
ZEND_MINIT_FUNCTION (core ){/*{{{*/
Zend_class_entry class_entry;
/* Register the stdClass */
INIT_CLASS_ENTRY (class_entry, "stdClass", NULL );
Zend_standard_class_def = zend_register_internal_class (& class_entry TSRMLS_CC );
/* Register the default class, interface, such as Exception class and some classes in SPL */
Zend_register_default_classes (TSRMLS_C );
Return SUCCESS;
}
/*}}}*/
This is the module initialization function of zend_builtin_module. This function is automatically loaded when the PHP kernel initializes the module. In this way, the registration operation of the stdClass class will be executed. From this code, we can see that the stdClass class is a class without any member variables or member methods. All its magic methods, including parent classes and interfaces, are set to NULL during initialization. Since we cannot dynamically add methods to a class in PHP, this class can only be used to process dynamic attributes, which is also a common usage.
Summary:
The stdClass class is an internal reserved class of PHP. It has no member variables or member methods at the beginning, and all magic methods are set to NULL. You can use it to pass variable parameters, however, there are no methods that can be called. The stdClass class can be inherited, but it makes no sense to do so.
Official reference: http://www.php.net/manual/en/language.oop5.basic.php#92123