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)