PHP和Symfony对象通过类型转换数组转换
问题描述:
我使用symfony2和createForm来获取http发布数据。巫后我做的:PHP和Symfony对象通过类型转换数组转换
$Data = (array) $form->getData();
我也得到:
array (size=1)
'�Far\MT\AccountBundle\Entity\Movement�toAccount' => int 3
我不认为这是对这些案件的正常行为,任何建议吗?
的toAccount应该是完整的索引名。
无法重现条件的测试用例执行以下命令:
<?php
namespace A;
class MyClass
{
public $id;
public $name;
public $age;
}
$object = new MyClass();
$object->name = "Andre";
$object->id = 1;
$object->age = 30;
var_dump($object);
$Ar = (array) $object;
var_dump($Ar)
这上面的工作确定。
我用这个解决方案:
//comment
$Data = $form->getData();
$obj = new \ReflectionObject($Data);
$props = $obj->getProperties();
$propname = array();
foreach ($props as $prop) {
$tmp = "get".ucfirst($prop->name);
if (($res = $Data->$tmp())!== null) {
$propname[$prop->name] = $res;
}
}
$tmpSearch = $propname;
我会照顾它清理干净。
答
可以使用Symfony的正规化类,如你的建议,当你在与像“facility_id”下划线表单名称字段,但您的二传手被称为facilityId
<?php
$data = $form->getData();
$normalizers = new \Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer();
$norm = $normalizers->normalize($data);
print_r($norm);
你会得到像输出将失败
Array ([fullname] => fullnameVal [email] => [email protected] [phoneNumber] => 5554444 [facilityId] => 123132)