1

我想知道创建对象列表的最佳方法。

目前,我有一个处理订单的课程。为了检索订单,它需要调用我们提供的 API。API 调用非常昂贵,以至于我可以进行调用以更快地返回 5000 个订单,而不是我可以为 2 个单独的订单进行 2 个单独的调用。

因此,我构建了我的类以两种方式进行初始化,一种方式允许我传递订单号并初始化自身,但如果我传递给它一个数组,它会使用数组中的数据来创建对象。

现在我有类似GetOrderList($startDate, $endDate)的函数调用 API 并填充一个数组,其中包含返回的 Order 对象,这样我就可以对它们进行处理了。

这对我来说感觉'hacky',所以我想知道是否有一种可接受的方式来做我想要完成的事情,同时更加 OOP。

注意:这是我用来学习最佳实践的个人项目,所以我宁愿听听我“应该做什么”与“我可以从这里做什么”

4

2 回答 2

1

在这种情况下,这对我来说听起来不错。如果你想“更正确”(你总是可以这样做),那么你可能想要创建一个 OrderManager 对象,它有一个类方法来管理订单集合。示例调用可能如下所示:

<?php
class OrderManager {
    public static function getListByDateRange($startDate, $endDate) {
        // ...
        return $listOfOrders;
    }
}

$orderList = OrderManager::getListByDateRange($startDate, $endDate);
?>

这称为中介模式。它提供了扩展管理器类以在以后进行其他形式的查询的灵活性,或者如果您发现自己经常这样做,您可以创建一个通用管理器类并指定它将在子类中使用哪些类型的对象。

于 2013-05-02T14:42:46.400 回答
0

几乎有两种方法可以做到这一点。有你这样做的方式,从你所说的声音来看,你基本上是在创建一个对象数组(列表)。OOP 方法是创建一个包含所有对象的“容器”类(可能通过扩展 ArrayObject 或使用 SplFixedArray)。然后,您可以附加一个迭代器(可能是 RecursiveArrayIterator),它将遍历所有存储的对象并应用您需要的任何功能。

于 2013-05-02T14:41:12.660 回答