从维护和代码组织的角度来看,在 PHP5 中,为来自 Web 服务的 XML 数据创建/定义对象和类是否有意义?
以Twitter 的 API为例,我将为每个 API 方法(状态、用户、direct_messages 等)创建一个类。对于statuses/public_timeline
,我会有这样的事情:
class Statuses {
public $status = array(); // an array of Status objects
public function __construct($url) { // load the xml into the object }
}
class Status {
public $created_at, $id, $text; // and the rest of the attributes follow...
}
$public_timeline = new Statuses('http://twitter.com/statuses/public_timeline.xml');
echo $public_timeline->status[0]->text;
还是将所有内容转储到关联数组中更好,这样可以像这样访问项目:
// the load_xml function is just something that will dump xml into an array
$public_timeline = load_xml('http://twitter.com/statuses/public_timeline.xml');
echo $public_timeline['statuses']['status'][0]['text'];
第一个设计:
- 严格遵循面向对象的原则
- 似乎是一种更适合编译语言的方法
第二种设计:
- 如果 API 被修改,需要的维护会少很多。如果 API 将属性添加到 XML,则需要在第一个设计中更新相应的类。