[ Dica PHP ] – Como chamar classes dinamicamente como PHP

E lá estava eu inventando moda, quando de repente, ao programar o CMS de minha empresa e após ter passado 5 horas estudando o Zend Framework 2, eu pensei: “Porque não colocar eventos no meu CMS?”
E foi ai que surgiu a necessidade de se instanciar classes dinamicamente.
Apesar de eu ja ter feito isto, a necessidade foi passar vários argumentos.
Eu utilizei recursos nativos do PHP, mas veja como eu procedi…

O PHP tinha uma função interessante call_user_method() que está deprecada e agora deve ser substituida por call_user_func_array().

Esta bichinha ai faz milagres. Vamos la!

Considerando as classes::


class Classe1 {
    public function metodo1( $a, $b, $c ) {
        echo "Eu sou a Classe1 "
            ."e meu método metodo1 vai retornar: $a, $b, $c";
    }
}
// e
class Classe2 {
    public function metodo2( $a, $b, $c ) {
        echo "Eu sou a Classe2 "
            ."e meu método metodo2 vai retornar: $a, $b, $c";
    }
}

Até ai tudo bem.
Agora para a mágica acontecer basta passar os valores, que neste caso você teria um algoritmo fodão processando isto e aquilo, arrays, funções, métodos e um monte de firulas…


$classe = 'Classe1';
$metodo = 'metodo1';
$parametros = array( 1, 2, 3 ); 
call_user_func_array( 
    // passamos classe e metodo
    array( $classe, $metodo), 
    // e os valores num array
    $parametros
);

Se você trocar os valores das variáveis $classe, $metodo e $parametros para:


$classe = 'Classe2';
$metodo = 'metodo2';
$parametros = array( 4, 5, 6 ); 
...

O resultado será o esperado!

Se você quiser saber mais sobre o método call_user_func_array() acesse a documentação disponível em http://br2.php.net/manual/pt_BR/function.call-user-func-array.php

Bom é isto ai!
Abraço do Giba!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *