2016-09-17 5 views
0

Мне нравится использовать 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

Часто существует некоторое скрытое входное значение для фальсификации глагола в таких фреймворках. Что-то вроде '' или 'name = '_ method'' – Blake

+0

@Blake Было бы здорово, если бы они были. – user1032531

+0

Вы читали это: http://docs.slimframework.com/routing/put/ - Относится к скрытому вводу, требуемому для изменения глагола там – Blake

ответ

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

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

screenshot



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

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

P.S. на вопрос о правильной настройке Трейси, напишите в комментариях (;

0

Slim3 Tracy gist увеличена до Slim3 Debug Bar package

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

И я согласен - PhpStorm лучше для отладки, но быстро обнаружить.. вары проще в Трейси.

в ближайшее время планируют добавить Echo Console (JQuery Terminal) Slim3 Debug Bar Terminal example