我在擴展ArrayObject的PHP類中排序項目時遇到問題。PHP - 排序ArrayObject
我正在創建我的類,我想通過添加cmp()函數的唯一方法是將其放在同一個文件中,但不在類中。我似乎無法將它放在其他任何地方,因爲uasort需要函數名稱作爲字符串。
所以我這樣做:
class Test extends ArrayObject{
public function __construct(){
$this[] = array('test' => 'b');
$this[] = array('test' => 'a');
$this[] = array('test' => 'd');
$this[] = array('test' => 'c');
}
public function sort(){
$this->uasort('cmp');
}
}
function cmp($a, $b) {
if ($a['test'] == $b['test']) {
return 0;
} else {
return $a['test'] < $b['test'] ? -1 : 1;
}
}
這是好的,如果我只使用一類這樣的,但如果我使用兩個(或者通過自動加載或要求),那麼它打破的努力調用cmp()兩次。
我想我的觀點是這似乎是一個壞方法來做到這一點。有沒有其他方法可以將cmp()
函數保存在類本身中?
我知道我可以稱他們爲不同的東西,但這似乎並不是一個很好的解決方案。 – dgig
創建一個包含此函數和其他類似實用函數的util.php文件。然後require_once('util.php');當你需要它時。 – dan08