设置Slim参数以便进行调试

时间:2016-09-17 15:19:04

标签: php rest debugging slim phped

我喜欢使用Slim,但对如何调试它感到很沮丧。假设我有以下路由。我可以做一个cURL请求,看看输出,但是我想通过我的IDE调试器逐行完成脚本,这恰好是NuShere的phpED。虽然我还没有快速弄清楚,我很确定我可以让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
});

3 个答案:

答案 0 :(得分:0)

根据Blake的评论,我创建了以下方法,并在构造函数中调用它。每次请求后,都会创建一个可以调试的新测试文件。

    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;
    }    

答案 1 :(得分:0)

如果出现异常需要调试信息:

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

您也可以按照此处的说明使用Firebug + FirePHP:https://www.sitepoint.com/debug-php-firebug-firephp/

<强>崔西
但我喜欢调试界面,所以我找到了类似这样的东西:https://github.com/nette/tracy

结帐这个要点:https://gist.github.com/1f7/b2d2846777e71f48e43a2ef7acc0a655(它在示例中有一点错误,但你可以处理它)

演示在这里:https://nette.github.io/tracy/tracy-debug-bar.html

我的测试实施的截图:

screenshot



但我真的建议你使用像PHPStorm这样的普通IDE,并像老板一样调试你的应用程序(:

观看:https://www.youtube.com/watch?v=rqDDJfG6ip4或者:https://www.youtube.com/watch?v=_U8xrj0-PXU

P.S。有关正确配置Tracy的问题,请写下评论(;

答案 2 :(得分:0)

Slim3 Tracy gist增加到Slim3 Debug Bar package

Slim3 Debug Bar 更多屏幕截图here

我同意 - PHPStorm更适合调试,但在Tracy中可以更快地发现vars。

在不久的将来计划中添加Echo Console(JQuery终端) Slim3 Debug Bar Terminal example