У меня возникла проблема с сортировкой элементов в классе PHP, который расширяет ArrayObject.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