erro de POO

Enviada por Garcia 
Garcia
erro de POO
10 de October de 2006 às 04:49PM
Olá a todos, estou com um problema que precisa deum milagre para ser resolvido.
Existe uma função que lida com array chamada uksort ( http://www.php.net/manual/pt_BR/function.uksort.php ), essa função ordena um array segundo uma outra função de comparação.
O primeiro parametro da função uksort é o array e o segundo é o nome da função de comparação.
A função de comparação tem dois parametros e deve retorna -1, 0 ou 1.
O meu problema é o seguinte:

Eu tenho uma classe, dentro dessa classe existe uma função, e dentro dessa função eu utilizo a função uksort, dentro da função de comparação eu preciso ( como vou dizer ? ) observar, obter, adquirir, possuir o valor de uma variável com escopo public que está nessa classe, mas o php me retorna o seguinte erro:

Fatal error: Using $this when not in object context

O Script é + ou - assim:

<?php

$reg[0]["ID"] = 1;
$reg[0]["NOME"] = "Marcos";
$reg[1]["ID"] = 2;
$reg[1]["NOME"] = "Andre";

class Exemplo1
{
static function Select($reg, $campo)
{
function cmp($a, $b){
if ( $a[$this->campo] == $b[$this->campo] ) return 0;
return ($a[$this->campo] > $b[$this->campo]) ? 1 : -1;
}
uksort($reg, "cmp");
return $reg;
}
}


$a = Exemplo1::Select($reg, "ID");

echo "<Pre>";
print_r($a);

?>

Se não achar uma forma de ver a variável $campo de dentro da função de comparação eu irei ter que desenvolver uma função parecida com a uksort para oferecer a função de comparação um terceiro argumento.

Agradeço desde já aquem puder ajudar.
Marcos Regis
Re: erro de POO
10 de October de 2006 às 05:11PM
TEnta assimm

uksort($reg, "$this->cmp");
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.