我正在使用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);
}
}
整个文件可以在这里下载:
答案 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);
}
}