به صورت خلاصه برای ساخت object در php چند روش وجود دارد :
روش اول : ساخت آرایه و cast کردن آن به object مانند زیر
$array = array ( 'mahdi' , 'ali' , 'moheb' );
$object = (object) $array ;
ولی باید توجه بشه که اگه آرایه چند بعدی باشه آرایههای داخلی تبدیل به object نمیشوند و آرایه باقی میمانند و برای اینکه تمام بعدهای آرایه تبدیل به object شود باید تمام ارایههای دورنی را هم cast کرد مانند زیر
$object = (object) array (
"user1" => (object) [
"name" => "mahdi" ,
"family" => "mortezaee"
] ,
"user2" => (object) [
"name" => "ali" ,
"family" => "habibi"
]
);
روش دوم : استفاده از کلاس stdClass که مانند زیر ساخته و مقدار دهی میشه
$object = new stdClass ;
$object->name = 'mahdi';
$object->family = 'moheb';
اما سوالی که برای من وجود داره اینه که در هردو روش object ساخته میشه که در مثال زیر حتی دارای مقدار یکسانی نیز هستند ولی اما در خروجی مقادیر دارای ماهیت یکسان نیستند.. به خروجی کد اگه دقت کنید این موضوع رو مشاهده میکنید :
$object_std = new stdClass ;
$object_std->name = 'mahdi';
$object_std->family = 'moheb';
$object = (object)[] ;
$object->name = 'mahdi';
$object->family = 'moheb';
if($object == $object_std){
echo 'equal value' ;
}else{
echo 'not equal value' ;
}
echo '<br>';
if($object === $object_std){
echo 'equal type' ;
}else{
echo 'not equal type' ;
}
//output =
// equal value
// not equal type