【发布时间】:2012-03-26 06:11:45
【问题描述】:
我的数据以关联数组的形式到达。这可行,但我的代码是一堆嵌套数组,我想开始使用适当的 OO/Objects 来使这些数据更易于使用。我无法更改接收这些数据的方式,因此我想找到一种干净的方法将关联数组转换为下面我的类的实例。
我有这些类来模拟我的应用程序中的人:
class Person {
/**
* @var string
*/
private $_name;
/**
* @var array[Dog]
*/
private $_dogs = array();
/**
* @var array[Hobby]
*/
private $_hobbies = array();
}
class Dog {
/**
* @var string
*/
private $_color;
/**
* @var string
*/
private $_breed;
}
class Hobby {
/**
* @var string
*/
private $_description;
/**
* @var int
*/
private $_cost;
}
我的数据(JSON 格式)如下所示:
'person': {
'name': 'Joe',
'dogs': [
{'breed': 'Husky', 'color': 'Black'},
{'breed': 'Poodle', 'color': 'Yellow'}
]
'hobbies': [
{'description': 'Skiing', 'cost': 500},
{'description': 'Running', 'cost': 0}
]
}
我可以使用 json_decode 轻松将此 JSON 转换为关联数组,但困难在于将每个嵌套的 Hobby 和 Pet 对象转换为适当的类,然后当我想要关联数组返回时,将这些对象再次转换为关联数组。
我可以通过在我的每个类中编写一个 to/from 数组函数来完成这一切,但这看起来相当混乱且容易出错。有没有更直接的方法可以让这些物体快速水合/脱水?
【问题讨论】:
标签: php oop design-patterns