2014-07-06 2 views
0

저는 Slim Framwork에 절대적으로 새로운 제품입니다. 나는 Andoird App과 Web-Application 사이의 인터페이스를 제공해야하는 Webservice에 대해 작업하고 있습니다. Slim Documentation을 사용하여 첫 걸음을 내딛었습니다. 이제는 앱에서 정보를 받기 위해 간단한 GET 경로를 만들고 싶습니다. 여기에 내가 지금까지 가지고있는 것입니다 :Slim Framwork - GET 경로 사용

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; 

나는 변수에 액세스해야합니다 : 함수 밖에서 이름을 얻을 수 있지만 아무것도 얻지 않습니다. 내가 여기서 뭘 잘못하고 있니?

Btw : GET 경로가 일반적으로 기존 자원을 나열하는 데 사용된다는 것을 알고 있지만, 간단한 경우이 방법을 사용하기로 결정했습니다.

+0

당신은 당신의 함수에서 얻을 수있는, 인수 매개 변수로 이름을 보유하도록 코드를 수정? 대답으로 표시하거나 무언가를 말하면 질문을 열어 두지 마십시오. –

답변

0

함수 컨텍스트 내에서 $name_outside을 처리하려면이를 전달하십시오.

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

그러나 아마 당신은 잘못된 방법으로 슬림을 사용하고 있습니다. 경로 외부에서 변수에 액세스해야하는 이유는 무엇입니까?

run() 호출 후 코드가 실행되지 않습니다. 그것이 슬림하게 작동하는 방법이고, 변수를 반향시키는 곳에 주사위를 놓으려고하면 도달 할 수 없습니다.

이렇게하면 외부 경로의 컨텍스트에 액세스 할 필요가 없습니다. 요청이나 응답을 변환하려면 미들웨어를 후크로 사용하십시오.

+0

나는 잘못된 생각을하고있었습니다. 이제 경로 내부의 데이터베이스를 호출하면 작동합니다. 실제로 들어오는 데이터를 계산하고 예상되는 데이터가 완료되면 데이터베이스에 삽입했습니다. 그러나 이제는 저장 프로 시저를 사용하여 데이터베이스의 모든 것을 계산합니다. 도움을 주셔서 감사합니다 ... – user3022425

+0

당신은 모든 경로 기능을 캡슐화했습니다. 요청을 받고 출력을 처리합니다. 답을 해결 된 것으로 표시하는 것을 잊지 마세요. –

1

내가 문제를 해결 한

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

$name_outside = ''; 

$app = new \Slim\Slim(); 
$app->get('/session/program_name/{name}', function ($args) use($app) { 
    $name_outside = $args['name']; 
    echo $args['name']; 
}); 
$app->run(); 
관련 문제