我有一个存在主义的怀疑,我不能在一个成为回调函数的参数中输入和操作相同的函数,我不知道这会是什么样的,但在这个例子中它显示了它。
<?php
class where{
public function show_sql( $params ){
if( is_numeric($params) ){
echo "Number $params <br />";
}elseif( is_callable($params) ) { // here validate if function
// get_defined_vars() <--- I get the variables but I can not manipulate same function
}
return $this;
}
}
$DB = new where;
$DB->show_sql(12)
->show_sql(13)
->show_sql(function ($object){
$object->show_sql(14);
});
?>
结果将是
Number 12
Number 13
但是数字14没有显示,我在同一个函数中调用它。 我想在此示例中获得与 Laravel 相同的结果:https://laravel.com/docs/master/queries#where-clauses转到参数分组
有人可以帮助我吗?
答案 0 :(得分:1)
您需要执行回调。
您可以使用call_user_func_array()并将对象作为参数传递:
}elseif( is_callable($params) ) {
call_user_func_array($params, [$this]);
}