如何使用Slim Framework for Rest在PHP中将$ app传递给类函数

时间:2015-04-14 01:27:25

标签: php rest scope slim

我正在使用slim框架,但是存在范围问题。我在字符串中使用他们的类名调用我的函数。我不知道如何将$ app传递给他们。这是我的$app->group$app->get行:

$app->group('/user', function() use ($app, $log)    {

    //User Functions
    $app->get('/login', 'myAPI::userLogin');
    $app->get('/signup', 'myAPI::userSignUp');
    $app->get('/exists', 'myAPI::userExists');
    $app->get('/info', 'myAPI::userInfo' );

}

这是我的课程和功能:( $ app不存在,因为它超出范围,我不知道如何访问它,所以我可以获取参数)

class myAPI
{
    public static function userInfo()   {
        $app = Slim::getInstance(); // <-- this line does not work
        // Get Parameters
        $username = $app->request->get('username');
        $college = $app->request->get('college');
        $domain = $app->request->get('domain');

        $query = "Select * FROM users WHERE username='$username'";
        if(!$results = Database::instance()->get_results($query)){
            $results = array('error' => 'No results.');
        }

        return self::output($results);
    }
}

整个文件可以在这里下载:

http://www.filedropper.com/showdownload.php/phpcode

1 个答案:

答案 0 :(得分:0)

这个答案非常简单。我更改了get调用以包含以类似方式调用API方法的自己的函数,但现在有一个use语句将$app范围传递给函数。这也要求我将它作为参数传递,所以也要将参数添加到函数中。

我将编写用于纠正此问题的代码:

我的Slim ->group->get以及对API类方法的函数调用:

$app->group('/user', function() use ($app, $log)    {

    //User functions
    $app->get('/info', function () use ($app) {myAPI::userInfo($app);});

}

我的班级函数调用:

class myAPI
{
    public static function userInfo($app)   {
        // Get Parameters
        $username = $app->request->get('username');
        $college = $app->request->get('college');
        $domain = $app->request->get('domain');

        $query = "Select * FROM users WHERE username='$username'";
        if(!$results = Database::instance()->get_results($query)){
            $results = array('error' => 'No results.');
        }

        return self::output($results);
    }
}