Php 将数组转换为类对象
我正在使用MongoDB作为数据库编写一个RESTful应用程序。php mongo驱动程序以php数组的形式返回查询结果,无论出于何种目的,它看起来都像我的类对象。在php中是否可以将查询结果强制转换为类对象Php 将数组转换为类对象,php,arrays,class,Php,Arrays,Class,我正在使用MongoDB作为数据库编写一个RESTful应用程序。php mongo驱动程序以php数组的形式返回查询结果,无论出于何种目的,它看起来都像我的类对象。在php中是否可以将查询结果强制转换为类对象 类似地,我可以用同样的方法强制转换JSON解码的php数组吗,即使它缺少一些属性?那么,您可以将其强制转换为stdClass: $a = ['a' => 1, 'b' => 2]; $object = (object) $a; 但我猜你不是在寻找它,你可能是在试图给它补水
类似地,我可以用同样的方法强制转换JSON解码的php数组吗,即使它缺少一些属性?那么,您可以将其强制转换为stdClass:
$a = ['a' => 1, 'b' => 2];
$object = (object) $a;
但我猜你不是在寻找它,你可能是在试图给它补水
在这种情况下,您可以这样做(假设您使用的是公共属性):
或者,如果使用的是“获取集”方法,请将“赋值行”更改为:
$setter = 'set' . ucfirst($key);
$object->$setter($val);
最终实施可能会有所不同。你有3个选择,我可以考虑:
trait FromArrayTrait
{
public static function fromArray(array $array)
{
$myClass = get_class();
$object = new $myClass();
foreach ($array as $key => $val) {
$object->$key = $val;
}
return $object;
}
}
在每种型号中,您可以:
class MyModel
{
use FromArrayTrait;
public $a;
public $b;
}
然后在你的逻辑中:
$myArray = ['a' => 5, 'b' => 10];
$myModel = MyModel::fromArray($myArray);
可能是@johncode的重复我看到了这一点,但它看起来不像我的问题那么具体,我正在寻找一种方法将它转换为一个特定的类,而问题是要将它设置为一个泛型对象。
$myArray = ['a' => 5, 'b' => 10];
$myModel = MyModel::fromArray($myArray);