【发布时间】:2015-08-01 21:40:43
【问题描述】:
有一种方法可以获取类属性并使用(array) 转换进行转换。
$user = (array) get_object_vars($userObject)
但我想知道,我没有找到任何将数组转换为类属性的直接方法。
假设我有以下实现的用户类:
class User
{
private $id = 0;
private $fname = '';
private $lname = '';
private $username = '';
}
我有以下数组:
$user = array(
'id'=> 2,
'fname' => 'FirstName',
'lname' => 'LastName',
'username' => 'UserName'
);
我正在寻找一种类型转换,就像我们有 (object) 一样。问题是(object) 类型转换将数组转换为stdClass 对象,但在这里我希望将我的数组转换为我指定的类。
示例应该这样表述:(我的假设,PHP 应该有这个。或者它可能已经有类似的东西,我不知道。)
$userobj = (object User) $user;
以上语法的结果应该是这样的:
$userobj->id = $user['id'];
$userobj->fname = $user['fname'];
$userobj->lname = $user['lname'];
$userobj->username = $user['username'];
我想知道有没有直接的方法,不是映射的逻辑。寻找语言级别的技巧。
注意:我知道使用foreach 来完成上述工作。我正在寻找一些直接的方法,如果在 PHP 中可用,但还没有成为焦点(可能是!)。
以下并不能解决我的问题: Convert/cast an stdClass object to another class
【问题讨论】:
-
您必须编写自己的自定义方法才能做到这一点。原因是对象不知道如何处理不同的属性或尚未定义的属性。类似 $object->load($array).
-
如果您从数据库中获取,大多数 API 都有
fetch_object()或类似名称,您可以在其中指定类。 -
那么直接回答你的问题是:不,PHP中不存在这种东西。
标签: php arrays class object type-conversion