سلام دوستان

یکی از مشکلاتی که برنامه نویسان php در هنگام گرفتن داده های json با آن مواجه می شوند تبدیل خروجی دیکد شده به کلاس مورد نظرشان هست.

وقتی شما از تابع json_decode استفاده می کنید نتیجه خروجی آن اگر از نوع Object باشد یک شیء از کلاس stdClass هست در غیر اینصورت یک آرایه انجمنی خواهید داشت
حالا فرض کنید که این داده ها مربوط به یک کلاس سفارشی میباشد که توسط شما نوشته شده است، چگونه باید نتیجه دیکد شده را به آن کلاس تبدیل کرد؟

لازم به ذکر هست که در صورتی که از توابع serialize و unserialize در php استفاده کنید نوع کلاس ها حفظ شده و با چنین مشکلی روبرو نخواهید شد

در زیر دو متد بسیار کاربری معرفی خواهیم کرد که به کمک آنها به سادگی می توانید این تبدیل ها را انجام دهید

function arrayToObject(array $array, $className) {
 return unserialize(sprintf(
 'O:%d:"%s"%s',
 strlen($className),
 $className,
 strstr(serialize($array), ':')
 ));
}
function objectToObject($instance, $className) {
 return unserialize(sprintf(
 'O:%d:"%s"%s',
 strlen($className),
 $className,
 strstr(strstr(serialize($instance), '"'), ':')
 ));
}