_SDinfo 3 Denunciar post Postado Outubro 4, 2012 $this->acao = $row['acao']; $this->id = $row['id']; $this->server = $row['servidor']; $this->alias = $row['alias_componente']; $this->nome = $row['nome_componente']; $this->status = $row['status']; $this->acao($this->id,$this->server,$this->alias,$this->nome,$this->status); Tenho o trecho de código acima, no objeto $this->acao (tenho o nome da função, vamos supor que é enviar_email), gostaria de chamar essa função dinamicamente pois em certos casos posso retornar do banco uma função com outro nome. Atualmente estou recebendo este erro ao implementar desta forma: #!C:/xampp/php/php.exe #!C:/xampp/php/php.exe Fatal error: Call to undefined method enviar_evento::acao() in C:\xampp\cgi-bin\temp\php\enviar_evento.php on line 27 Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 4, 2012 cria um interface para padronizar a assinatura do metodo, depois faça os objetos implementarem ela. Compartilhar este post Link para o post Compartilhar em outros sites
_SDinfo 3 Denunciar post Postado Outubro 4, 2012 cria um interface para padronizar a assinatura do metodo, depois faça os objetos implementarem ela. Não faço a mínima ideia de como ficaria. Poderia me dar uma ajuda? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Outubro 4, 2012 Acho que você quer fazer um EVAL(), mas a dúvida não esta clara. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Outubro 4, 2012 $this->acao = $row['acao']; //... $this->acao($this->id,$this->server,$this->alias,$this->nome,$this->status); Ahn? Você tem uma propriedade e um método com o mesmo nome? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Outubro 4, 2012 $this->acao = $row['acao']; //... $this->acao($this->id,$this->server,$this->alias,$this->nome,$this->status); Ahn? Você tem uma propriedade e um método com o mesmo nome? Aí é que esta, não tem o método, ele tem outros métodos... exemplo: - enviar(), checar(), apagar(), etc... De acordo com a ação informada, um desses métodos (ações) deve ser chamado. Uma opção que eu disse foi usar EVAL, mas dá pra fazer de outras formas. Esse foi o meu entendimento. Compartilhar este post Link para o post Compartilhar em outros sites
_SDinfo 3 Denunciar post Postado Outubro 4, 2012 O método existe. Consegui resolver de uma forma bem simples: $this->acao = $row['acao']; $this->id = $row['id']; $this->server = $row['servidor']; $this->alias = $row['alias_componente']; $this->nome = $row['nome_componente']; $this->status = $row['status']; $acao = $this->acao; $acao($this->id,$this->server,$this->alias,$this->nome,$this->status); Muito simples de resolver, mas dias acordado deixam a pessoa cansado. Senhores, muito obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 4, 2012 então você queria executar uma função e não um metodo? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Outubro 4, 2012 :) Acho que bastava fazer isso: $this->$acao(...); Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 4, 2012 :) Acho que bastava fazer isso: $this->$acao(...); se esse metodo n existir na classe da erro... agora como a função de precisa de um objeto para chama-la, fica bem mais facil. do jeito q esta o codigo parece um função 'perdida' no meio de um metodo/classe... Compartilhar este post Link para o post Compartilhar em outros sites
_SDinfo 3 Denunciar post Postado Outubro 4, 2012 :) Acho que bastava fazer isso: $this->$acao(...); Se eu tentar executar desta forma o erro é: Notice: Undefined variable: acao in C:\xampp\cgi-bin\temp\php\enviar_evento.php on line 26 Fatal error: Method name must be a string in C:\xampp\cgi-bin\temp\php\enviar_evento.php on line 26 Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Outubro 4, 2012 Se eu tentar executar desta forma o erro é: Notice: Undefined variable: acao in C:\xampp\cgi-bin\temp\php\enviar_evento.php on line 26 Fatal error: Method name must be a string in C:\xampp\cgi-bin\temp\php\enviar_evento.php on line 26 Hmmmm... OK Deu um conflito dos nomes e enrolou a interpretação do script. Bem, o caso já esta solucionado. Compartilhar este post Link para o post Compartilhar em outros sites