【发布时间】:2015-05-29 16:16:29
【问题描述】:
我在对扩展 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() 函数保留在类本身中?
【问题讨论】:
-
我知道我可以称它们为不同的东西,但这似乎也不是一个很好的解决方案。
-
创建一个 util.php 文件,其中包含此函数和其他类似的实用程序函数。然后 require_once('util.php');当你需要的时候。
标签: php sorting arrayobject