在另一个via参数中调用相同的函数

时间:2018-06-05 05:22:42

标签: php class

我有一个存在主义的怀疑,我不能在一个成为回调函数的参数中输入和操作相同的函数,我不知道这会是什么样的,但在这个例子中它显示了它。

<?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转到参数分组

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您需要执行回调。

您可以使用call_user_func_array()并将对象作为参数传递:

}elseif( is_callable($params) ) {
    call_user_func_array($params, [$this]);
}