Warning de Callback na função call_user_func_array()
Fala galera estou com um semi-problema aqui em um sistema que estou desenvolvendo na empresa que trabalho.
Porque um Semi-problema?
Semi problema porque o código em si está funcionando porem o PHP está printando um Warning bem grande na tela reclamando que não estou enviando um tal de Callback na minha função, enfim vou mostrar minha função e a chamada atravez do call_user_func_array();
Essa é minha requisição em Ajax
var url = $("#url").val(); //pega a url base
var dados = $("#nome_do_form :input").serializeArray(); //serealiza o form
var met = 'nomeMetodo'; //nome do metodo
$.ajax({
type: "POST",
url: url + 'controller',
data: {met: met, url: url, dados: dados},
success: function (result) {
$("#resultado").empty();
$("#resultado").append(result);
}
});
Quem recebe esse Ajax é o meu Controller através de um roteamento que vai destrinchar essa url dinamica que o Ajax passou.
Podem ver que a variável met está me trazendo qual vai ser o nome do metodo a ser executado no controller.
Segue meu controller
$metodo = 'NomeClass::'.$_POST['met']; //nome do metodo já concatenado com o nome da classe
//aqui montamos o array com os dados que o Ajax enviou no serialize
for ($c = 0; $c < count($_POST['dados']); $c++) {
$dados[$c] = $_POST['dados'][$c]['value'];
}
//Aqui nos chamamos nosso metodo dentro da função call_user_func_array
//passamos dois parametros, os dados e uma conexão com o banco de dados
//Nessa chamada de call_user_func_array() que ocorre nosso Warnning
if (call_user_func_array($metodo, array($dados, new Config()))) { // <-------------------------
echo ' Salvo em ' . date("d-m-Y") . ' - ' . date("H:i:s");
}
Abaixo vou passar o código do modelo moçada mas o problema está acontecendo nessa chamada que marquei do Controller. O mais estranho é que seu chegar ali e trocar a variavel $metodo por uma string com a referencia do metodo ex('NomeClass::nomeMetodo') o warnning não aparece.
Segue o Modelo
class nomeClass {
public static function nomeMetodo($dados, $mysql, $callback=null){
if($_SERVER['REQUEST_METHOD']=='POST'){
$cadastra = $mysql->conn()->prepare('INSERT INTO `tabela`(dado1, dado2, dado3) VALUES (?, ?, ?)');
if(is_callable($callback)){
echo 'Callback';
} else {
return $cadastra->execute($dados);
}
}
}
}
Como podem ver eu ate tentei criar o callback com um video que vi mas não funcionou, continua dando o erro, acho que ele está confundindo algum dado que estou passando com eu querer passar um callback, isso é possível.
Galera deixo essa dúvida mortal com vocês, hoje estou usando um @ para não printar o warnning porque como disse a função está funcionando perfeitamente sussa.
Muito obrigado desde já
Discussão (0)
Carregando comentários...