Задать вопрос
ruskar
@ruskar
Conflict Intelligence Team

PHP: вызов пользовательской функции сортировки из объекта?

В PHP есть такая функция:

bool usort ( array &array, callback cmp_function )


Ей вторым параметром передаётся имя функции, которая будет принимать очередную пару значений и сравнивать их.


Есть обычный класс PHP:

namespace MyProj;

class Test {
	public function sortDir($a,$b)
	{
		if(is_dir($a['path']) && !is_dir($b['path'])) return -1;
		if(!is_dir($a['path']) && is_dir($b['path'])) return 1;
		if($a['name']<$b['name']) return -1; elseif($a['name']>$b['name']) return 1; else return 0;
	}
	
	public function getList()
	{
		$dir[0] = array('path' => '/home/www', 'name' => 'www');
		$dir[1] = array('path' => '/home/www/css', 'name' => 'css');
		$dir[2] = array('path' => '/home/www/test.txt', 'name' => 'test.txt');
		$dir[3] = array('path' => '/home/www/css/main.css', 'name' => 'main.css');
		
		usort($dir, 'sortDir');
	}
}

$obj = new Test();
$obj->getList();


Вот как правильно вызвать <b>usort($dir, 'sortDir')</b> в одной из последних строк? Какие варианты не пробовал, всегда выдаёт:

Warning: usort() expects parameter 2 to be a valid callback, function 'sortDir' not found or invalid function name
  • Вопрос задан
  • 4476 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@skvot
usort($a, array("Test", "sortDir"));
Ответ написан
@niko83
Ответ написан
Комментировать
ramilexe
@ramilexe
Попробуйте
usort($dir, array("this", "sortDir"));
или
usort($dir, array("Test", "sortDir") );
Ответ написан
@Krio
usort($dir, array($this, «sortDir») );
Ответ написан
Комментировать
WebSpider
@WebSpider
usort($dir, 'self::sortDir');
или
usort($dir, 'MyProj\Test::sortDir');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы