我在扩展 ArrayObject 的 PHP 类中对项目进行排序时遇到问题。
我正在创建我的类,我想出添加 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()
函数保留在类本身中?