我想知道创建对象列表的最佳方法。
目前,我有一个处理订单的课程。为了检索订单,需要调用我们提供的API。 API调用是非常昂贵的,我可以拨打电话,返回5000个订单比我可以为2个单独的订单进行2次单独调用更快。
因此,我构建了我的类以两种方式初始化,一种方式允许我传递一个订单号并初始化它自己,但如果我传递一个数组,它使用数组中的数据来创建对象
现在我有像GetOrderList($startDate, $endDate)
这样的函数调用API并填充一个完整的Order对象数组,这些对象会被返回,所以我可以用它们做些什么。
对我来说这感觉“很烦”,所以我想知道是否有一种可以接受的方式来做我想要完成的事情而更多的OOP。
注意:这是我用来学习最佳实践的个人项目,所以我宁愿听到我应该做什么'vs'我能从这里做什么'
答案 0 :(得分:1)
在这种情况下,对我来说听起来不错。如果你想“更正确”(你总是可以),那么你可能想要创建一个OrderManager对象,它有一个类方法来管理Orders集合。示例调用可能如下所示:
<?php
class OrderManager {
public static function getListByDateRange($startDate, $endDate) {
// ...
return $listOfOrders;
}
}
$orderList = OrderManager::getListByDateRange($startDate, $endDate);
?>
这称为mediator pattern。它提供了扩展管理器类以便稍后进行其他形式查询的灵活性,或者如果你发现自己做了很多,你可以创建一个通用的管理器类,并指定它将在子类中使用哪些类型的对象。 / p>
答案 1 :(得分:0)
有两种方法可以做到这一点。你正在这样做的方式,通过你所说的声音,你基本上创建了一个对象的数组(列表)。 OOP方式是创建一个包含所有对象的“容器”类(可能通过扩展ArrayObject或使用SplFixedArray)。然后你可以附加一个迭代器(可能是RecursiveArrayIterator),它将遍历你所有存储的对象并应用你需要的任何功能。