Fat-Free-Framework global variables and functions

前端 未结 1 1744
你的背包
你的背包 2020-12-18 02:01

I\'m new to fat free framework and i\'m a little bit confused about the global variables.

$f3->route(\'GET /@page\',\'display\');

    function display($         


        
相关标签:
1条回答
  • 2020-12-18 02:31

    The F3 instance variable which is declared at the very start of your index.php ($f3=require...) can be retrieved anywhere in the code using the static call $f3=Base::instance().

    Anyway, for convenience purpose, at routing time this F3 instance as well as the route parameters are passed to the route handler. Therefore, instead of defining your route handler as:

    function display() {
        $f3=Base::instance();
        echo 'I cannot object to an object' . $f3->get('PARAMS.page');
    };
    

    you could define it as:

    function display($f3) {
        echo 'I cannot object to an object' . $f3->get('PARAMS.page');
    };
    

    or even better:

    function display($f3,$params) {
        echo 'I cannot object to an object' . $params['page'];
    };
    

    These 3 functions are absolutely identical so you should pick up the one that you understand best. But you should remember that $f3 and $params are only passed at routing time, which means to 3 functions: the route handler, the beforeRoute() hook and the afterRoute() hook. Anywhere else in the code (including inside a class constructor), you should call Base::instance() to retrieve the F3 instance.

    PS: your question being "why do i have to pass the $f3 class to the function?", I would suggest you to rename its title to reflect it.

    UPDATE: Since release 3.2.1, the F3 instance is also passed to the constructor of the route handler class:

    class myClass {
        function display($f3,$params) {
            echo 'I cannot object to an object' . $params['page'];
        }
        function __construct($f3) {
            //do something with $f3
        }
    }
    
    0 讨论(0)
提交回复
热议问题