Php 这个OOP对象如何从另一个类访问其顺序

Php 这个OOP对象如何从另一个类访问其顺序,php,oop,class,Php,Oop,Class,我有几个Item类型的对象。项目已排序,但它们的排序可以更改,因此为了简化排序,我不想为每个项目指定自己的order属性。我认为最好让列表存储每个项目,因为它可能会被创建到一个数组中,并且项目的顺序也会这样决定。(首先,这种方法是否存在设计问题?) 我的问题是,如何通过联系商品本身来获取商品的订单?理想情况下,我想做这样的事情 $item = new Item(); $item->getOrder(); 项目必须依赖于列表才能获得其顺序,那么它应该如何做呢 我还没有完全决定将项目存储在列

我有几个Item类型的对象。项目已排序,但它们的排序可以更改,因此为了简化排序,我不想为每个项目指定自己的
order
属性。我认为最好让列表存储每个项目,因为它可能会被创建到一个数组中,并且项目的顺序也会这样决定。(首先,这种方法是否存在设计问题?)

我的问题是,如何通过联系商品本身来获取商品的订单?理想情况下,我想做这样的事情

$item = new Item();
$item->getOrder();
项目必须依赖于列表才能获得其顺序,那么它应该如何做呢


我还没有完全决定将项目存储在列表中的数组中。任何其他使事情更容易的结构都是好的。我正试图用一种很好的面向对象的方法来实现这一点。

如果项目必须知道列表,请将列表添加为项目的属性,例如
parentList

如果要向列表询问特定项的顺序,请在列表中为此创建一个方法

function orderOf($item){...}
那么现在在你的

$item->getOrder() 
只需查询您的列表

$list = $item->parentList();
return $list->orderOf($this);

+1.使用接口可能会进一步改进此方法,因此您可以确保使用的每个列表都支持
orderOf
方法,并且项可以有不同类型的列表。@Dan我不明白
项可以有不同类型的列表。你是指类型还是“实例”?你能解释一下吗?类型。只要类实现了列表接口,您就可以在示例中使用它。例如,您可以创建列表接口和实现它的类:OrderedList、TenElementsMaxList、GroceryList、SuperFastList等。实际上,类型如luxquarta所说。luxquarta和Dan Cool,我现在明白了。