public static function transform(array $array, $deep = false) { $result = array(); foreach ($array as $key => $value) { if (is_object($value)) { if (array_key_exists("{$key}_id", $array)) { continue; } if ($deep || !$value instanceof Entidade) { $result[$key] = ArrayEx::transform(get_object_vars($value)); } else { $result[$key] = array("Id" => $value->getId()); } } else { if (is_array($value)) { $result[$key] = ArrayEx::transform($value, !$deep); } else { if (!is_null($value)) { $result[$key] = $value; } } } } return $result; }
public function toJson() { $data = ArrayEx::transform(get_object_vars($this)); return json_encode($data); }
public function testToJsonRemovePropriedadeComplexaQuePossuiPropriedadeId() { $municipio = new MunicipioTestObject(); $municipio->setId(1); $municipio->setNome("Fortaleza"); $conta = new ContaTestObject(); $conta->setId(2); $conta->setNome("Banco do Brasil"); $rateio = new RateioTestObject(); $rateio->setMunicipio($municipio); $rateio->setConta($conta); $arr = ArrayEx::transform(ObjectParser::toArray($rateio)); $this->assertEquals(2, count($arr)); $this->assertEquals(1, $arr["Municipio_id"]); $this->assertEquals(2, $arr["Conta_id"]); }