In PHP, if the class is not prepared in advance and you need to create an object of undefined class, we can use the following three methods: 1. "new stdClass()", "new class{}(object)" and "(object)[]". The editor will introduce it in detail below.
In PHP, if the class is not prepared in advance and you need to create an object of undefined class, we can use the following three methods:
new stdClass()
$a = new stdClass(); var_dump($a);
new class{}? Those who have been developing for a period of time and have been exposed to front-end js and other dynamic languages should be able to guess that this is an anonymous class. Generally very common in parameter objects. The objects it creates can have attribute methods.
$b = new class{ public $p = 1; }; var_dump($b);
The last thing we see is using an array to be forced into an object to generate an object.
$c = (object)[ 'p' => 1 ]; var_dump($c);
Obviously, the object generated by array coercion is of the same type as the first object, and it can have attributes or not. However, it cannot take methods.
The objects generated by the array coercion method are very intuitive and easy to understand. If it is just the encapsulation of attribute objects, using this method will be more elegant and comfortable. Complex object generation can be generated using anonymous classes. For some objects that only need placeholders, you can use the stdClass method. Of course, using an empty array is also very convenient.
It should be noted that array coercion needs to comply with the rules of type conversion. For example, the problem of numerical subscripts.
In daily development, we often use these functions when using some interfaces or database ORM frameworks. For example, the insertion and modification of some ORM frameworks require the incoming of objects containing only attributes. At this time, you can use the above method to flexibly generate objects without completely defining the class template.
Test code:
https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%88%9B%E5%BB%BA%E6%9C%AA%E5%AE%9A%E4%B9%89PHP%E5%AF%B9%E8%B1%A1.php
Recommended learning:
php video tutorialThe above is the detailed content of How to create undefined class PHP object. For more information, please follow other related articles on the PHP Chinese website!