Métodos? Variáveis?
Olá a todos. Este post traz algo legal: métodos chamados através de variáveis.
Métodos? Variáveis? Isso!
Primeiro vamos ver um método simples:
<?
function quadrado($numero) {
return $numero * $numero;
}
?>
Certo. método que retorna o quadrado do número informado.
Agora vamos chamar este método:
<?
$quadrado = quadrado(4);
// $quadrado será 16
?>
Assim é o padrão. vamos agora ver como chamamos este método através de variável.
O PHP permite a execução de uma variável como método desde que o conteúdo da variável corresponda a um método definido e ele tenha os parâmetros corretamente.
<?
$metodo = "quadrado";
$quadrado = $metodo(4);
// $quadrado será 16 do mesmo jeito
?>
Viu? Legal, né xD
Tá legal Felipe... mais uma coisa que só você vê utilidade... -_-
Hehe dessa vez vou mostrar uma utilidade:
Vocês já precisaram implementar uma rotina que chame um método dentro de um loop (passagem por registros de um record set por exemplo) e poder usar de forma genérica para que dê para usar a mesma rotina em situações diferentes? Então... Esta é a solução.
Hmmmmmmmm..... Tá..... ...... ...... Não entendi.
Ok, Ok. Exemplo:
Eu tenho um método que faz uma consulta no banco de dados e retorna resultados em um array multidimensional (para minha aplicação não ficar acoplada ao banco de dados). Se a consulta retornar resultados demais o buffer não agüenta e o script é abortado.
Então eu criei um método que executa o comando SQL, faz um loop no resultado e a cada passagem chama o método que foi definido no parâmetro e passa para este método o registro corrente para o método fazer o que deve fazer com o registro.
Com isso podemos definir métodos diferentes e executar ações diferentes para a mesma consulta. E sem precisar repetir os loops.
Hmmmmmmmm..........Tá quase.....
Ok, Ok.
Implementação do método chave (este fica na biblioteca principal):
<?
function executarMetodoDuranteSelecao($sql, $metodo) {
$resultado = mssql_query($sql);
while($registro = mssql_fetch_array($resultado)) {
$metodo($registro);
}
}
?>
Agora um método para uma consula específica (este fica no objeto de negócio):
<?
function consultarLivros($metodo) {
$sql = "select id, nome from livros";
executarMetodoDuranteSelecao($sql, $metodo)
}
?>
Finalmente a implementação no seu script:
<?
function mostrarLivro($registro) {
echo "<p><div>$registro[id]</div>";
echo "<div>$registro[descricao]</div></p>":
}
$instanciaObjNegocio->consultarLivros("mostrarLivro");
?>
Legal. Quando executar o método consultarLivros este vai enviar o comando SQL para o método da biblioteca executarMetodoDuranteSelecao que vai executar o comando SQL, fazer o loop e a cada passagem do loop executaro método definido na variável $metodo, que vai, a cada registro, mostrar duas div contendo os campos id e descricao.
Este assunto não é muito simples. Espero que eu tenha colocado de forma que todos possam entender. A seção de comentários é aberta para qualquer dúvida ou sugestão (nada de reclamações, por favor xD).
Abraços a todos.
Nenhum comentário:
Postar um comentário