超薄框架 - 使用GET路由

时间:2014-07-06 16:36:47

标签: rest slim

我对Slim Framework完全不熟悉。我正在开发一个Web服务,它应该提供Android应用程序和Web应用程序之间的接口。我使用Slim Documentation来完成我的第一步,现在我想创建一个简单的GET路由,从App接收信息。以下是我到目前为止的情况:

require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$name_outside = '';

$app = new \Slim\Slim();
$app->get('/session/program_name/:name', function ($name) use($app) {
    $name_outside = $name;
    echo $name;
});

$app->run(); 

echo $name_outside;

我需要访问变量:函数外部的名称,但我得到的是什么。我在这做错了什么?

顺便说一句:我知道GET路由通常用于列出现有资源,但对于我的简单案例,我决定以这种方式使用它。

2 个答案:

答案 0 :(得分:1)

修复您的代码以将名称保存为args参数,然后您可以进入您的函数

@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
    // Generate additional Information [...]


    // Write it to the token
    ((DefaultOAuth2AccessToken)accessToken).setAdditionalInformation(addInfo);

    // Encode Token to JWT
    String encoded = super.encode(accessToken, authentication);

    // Set JWT as value of the token
    ((DefaultOAuth2AccessToken) accessToken).setValue(encoded);

    return accessToken;
}

答案 1 :(得分:0)

在你传递的函数上下文中访问$name_outside

$app->get('/session/program_name/:name', function ($name) use($app, &$name_outside) { $name_outside = $name; echo $name; });

但也许你以错误的方式使用Slim。为什么你必须访问路线之外的变量?

run()电话后没有代码被执行。这就是苗条的工作方式,尝试将一个骰子放在你回应变量的地方,它是无法达到的。

您不应该以这种方式访问​​其外部路由的上下文。要转换请求或响应,请使用带有钩子的中间件。