2012-04-17 3 views
0

У вас есть вопрос о Slim Framework php.SLIM framework Остановить звонок

В моем приложении я хотел бы остановить выполнение приложения, если условие несовместимо.

Существует функция остановки в соответствии с тонкой документацией. Но это, похоже, не работает. приложение непрерывное выполнение даже после вызова Halt.

псевдо-код:

if ($valid) { 
     // Do something 
} else { 
    $app->halt(500, "not valid"); 
} 
// Other code here. 


$app->run(); 

Я ожидал, что мы будем называть функцию Halt, «Другой код» не должен выполнять. Но, похоже, это не так.

Любые идеи?

ответ

1

Вы всегда можете вызвать exit вручную, чтобы остановить выполнение скрипта.

$app->halt(500, "not valid"); 
exit; 
+0

Это то, что я делал. Но это не рекомендуется Slim парням. Они говорят, что остановка должна позаботиться об этом. Вот ссылка. [link] (http://help.slimframework.com/discussions/questions/122-use-or-not-to-use-exit) –

+0

@KevinRave ah. Тогда я споткнулся. –

+0

В любом случае, это единственный вариант сейчас! Благодаря! –

2

Halt следует вызывать только в контексте обратного вызова маршрута. Я рекомендую вам задать любые дополнительные вопросы на официальном форуме поддержки Слим Framework:

http://help.slimframework.com

С наилучшими пожеланиями, Джош

6

Halt должен работать. Как сказал Джош, его нужно вызвать из обратного вызова маршрута. Например, я использую следующее как пользовательский 404 (внутри index.php) в случае, если указанный маршрут не найден.

// not found (custom 404) 
    $app->notFound(function() use ($app) { 

      // build response 
      $response = array(
       'type' => 'not_found', 
       'message' => 'The requested resource does not exist.' 
      ); 

      // output response 
      $app->halt(404, json_encode($response)); 

    }); 

Примечание ссылка на использование ($ приложение) - подробнее об этом можно найти здесь: http://www.slimframework.com/documentation/stable#scope-resolution

0

Вы можете использовать возврат, если вы находитесь в функции обратного вызова

return $app->halt(500,"message"); 

или

$app->stop(); 

после остановки функция.