我有一個類表示一個集合實體:它只有一個屬性,一個數組。本課實現\Countable
,\IteratorAggregate
,對於這個問題最重要的是\ArrayAccess
。我必須實現哪個SPL接口才能在對象上使用usort()函數?
但在使用時:
usort($collectionData, function($a, $b) {
return ($a->getPosition() > $b->getPosition());
});
得到以下開捕異常:
警告:usort()預計參數1是數組,對象在 /家/阿蘭/工作區給定的/(...)n.php線1057(500內部服務器錯誤)
我可以使用一箇中間變量:
$data = $collectionData->getData();
usort($data, function($a, $b) {
return ($a->getPosition() > $b->getPosition());
});
$collectionData->setData($data);
但想知道是否有一個SPL接口可以通過usort()
陣列參數類型的期望。
這是唯一的方式簡單做AFAIK作爲以及 – JamesHalsall 2013-02-28 13:26:20
當然你的方式比分鐘好即如果我們在PHP中有很多本地數組操作函數,那麼無法重載'array'類型是非常不幸的。 – 2013-02-28 13:33:35
順便說一句:這看起來像一個偉大的使用案例'特質' – Mchl 2013-02-28 13:37:31