我有这样的对象。我怎样才能创造类似的东西,这有可能吗?另外,我对如何从此对象获取示例id
的值感兴趣。
object(JForm)#136 (5) {
["data":protected]=>
object(JRegistry)#123 (1) {
["data":protected]=>
object(stdClass)#122 (9) {
["id"]=>
string(1) "2"
["checked_out"]=>
string(3) "413"
["checked_out_time"]=>
string(19) "2013-11-17 15:01:46"
["name"]=>
string(4) "erff"
["type"]=>
string(8) "Password"
["options"]=>
string(22) "["hgdfhd","jhf","hjf"]"
["label"]=>
string(5) "gsdfg"
["values"]=>
string(14) "hgdfhd,jhf,hjf"
["required"]=>
string(1) "1"
}
}
此处的完整对象:http://pastebin.com/dJ2jP2TP
答案 0 :(得分:1)
可以在不创建类的情况下创建通用对象。
$foo = new \StdClass();
$foo->somePropery = 'foo';
$foo->otherProperty = new StdCLass();
$foo->otherProperty->childProperty = 'bla';
依旧......
甚至可以从数组中创建通用对象。
$foo = array(
'JRegistry' => array(
'data' => array(
"id" => 1,
"checked_out"=> false,
"checked_out_time"=> new \DateTime("now"),
"name"=> 'John',
"type"=> 'bla',
"options"=> array('foo', 'bar', 'baz'),
"label"=> 'nahca',
"values"=> array('bla', 'bli'),
"required"=> false
)
)
);
function convertArrayToObj(array $array) {
$obj = new stdClass();
foreach($array as $key => $val)
{
if (is_array($val)) {
$obj->$key = convertArrayToObj($val);
} else {
$obj->$key = $val;
}
}
return $obj;
}
$fooObj = convertArrayToObj($foo);
var_dump($fooObj);
但是......此对象没有方法,所有属性都是公开的