Настройка параметров Slim для отладки

Мне нравится использовать Slim, но я разочарован тем, как его отладить. Допустим, у меня есть следующий маршрут. Я могу сделать запрос cURL и посмотреть вывод, но вместо этого я хочу построчно пройти по сценарию с моим отладчиком IDE, который оказывается phpED NuShere. Хотя я не очень быстро понял это, я почти уверен, что смогу заставить phpED выполнить запрос POST, но определенно не запрос PUT или DELETE, так что в этом нет никакого смысла.

Есть ли способ сделать это? Я могу заставить $_SERVER['REQUEST_URI'] а также $_SERVER['REQUEST_METHOD'] к любому значению достаточно легко, а также может изменить $_GET суперглобальные, но данные тела (т.е. $_POST) не все так просто.

<?php
$app = new \Slim\Slim();
$app->get('/books/:id', function ($id) {
//Show book identified by $id
});
$app->post('/books', function () {
//Create book
});
$app->put('/books/:id', function ($id) {
//Update book identified by $id
});
$app->delete('/books/:id', function ($id) {
//Delete book identified by $id
});
$app->get('/toys/:id', function ($id) {
//Show toy identified by $id
});
$app->post('/toys', function () {
//Create toy
});
$app->put('/toys/:id', function ($id) {
//Update toy identified by $id
});
$app->delete('/toys/:id', function ($id) {
//Delete toy identified by $id
});

0

Решение

Основываясь на комментариях Блейка, я создал следующий метод и вызвал его в конструкторе. После каждого запроса создается новый тестовый файл, который можно отлаживать.

    private function createTest($params,$method)
{
$inputs=print_r($params,1);
$method=strtolower($method);
$method2=($method=='put' || $method=='delete')?'post':$method;
$html=$this->createTestInputs($params,null,null); //array, previous inputs, name prefix
$html=<<<eod
<p>URL: $_SERVER[REQUEST_URI]</p>
<p>METHOD: $method</p>
<p>INPUTS:<pre>$inputs</pre></p>
<form action="$_SERVER[REQUEST_URI]" method="$method2">
$html
<input type="hidden" name="_METHOD" value="$method"/>
<input type="submit" value="Test"/>
</form>
eod;
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test.php', $html);
}

private function createTestInputs($params,$html,$prefix)
{
foreach($params as $name=>$value) {
if(is_array($value)) {
$html=$this->createTestInputs($value,$html,$name);
}
else {
$html.="<input name='".($prefix?$prefix.'['.$name.']':$name)."' type='hidden' value='$value' />\n";
}
}
return $html;
}
0

Другие решения

Если вам нужна отладочная информация в случае исключения:

$app->config('debug', true);

Также Вы можете использовать Firebug + FirePHP, как описано здесь: https://www.sitepoint.com/debug-php-firebug-firephp/

Tracy
но мне нравится интерфейс отладки, поэтому я нашел что-то вроде этого: https://github.com/nette/tracy

Оформить заказ https://gist.github.com/1f7/b2d2846777e71f48e43a2ef7acc0a655 (в этом примере есть небольшие ошибки, но Вы можете справиться с этим)

демо здесь: https://nette.github.io/tracy/tracy-debug-bar.html

скриншот моей тестовой реализации:

Скриншот

но я очень рекомендую вам использовать нормальный IDE, как PHPStorm и отладить ваше приложение как босс (:

часы: https://www.youtube.com/watch?v=rqDDJfG6ip4 или это: https://www.youtube.com/watch?v=_U8xrj0-PXU

постскриптум на вопрос о правильной настройке Трейси напишите в комментарии (;

0

Slim3 Трейси суть увеличился до Slim3 Debug Bar пакет.

Slim3 Debug Bar
Больше скриншотов Вот.

И я согласен — PHPStorm лучше для отладки, но быстрое обнаружение переменных легче в Tracy.

В ближайшее время добавим Echo Console (JQuery Terminal)
Пример Slim3 Debug Bar Terminal

0
По вопросам рекламы [email protected]