2016-09-17 5 views
0

Ich genieße Slim verwenden, bin aber frustriert, wie Sie es debuggen. Sagen wir, ich habe das folgende Routing. Ich kann eine cURL-Anfrage machen und die Ausgabe sehen, aber stattdessen möchte ich das Skript Zeile für Zeile mit meinem IDE-Debugger durchlaufen, bei dem es sich um NuShere's phpED handelt. Während ich es nicht schnell herausgefunden habe, bin ich mir ziemlich sicher, dass ich phpED dazu bringen kann, eine POST-Anfrage zu machen, aber definitiv keine PUT- oder DELETE-Anfrage, also hat es keinen Sinn.Schlanke Parameter einstellen, um zu debuggen

Gibt es eine Möglichkeit, dies zu tun? Ich kann zwingen $_SERVER['REQUEST_URI'] und $_SERVER['REQUEST_METHOD'] auf jeden Wert einfach genug, und kann auch die $_GET superglobal ändern, aber Körperdaten (d. H. $_POST) ist nicht so einfach.

+0

Oftmals gibt es einen versteckten Eingabewert für das Vortäuschen eines Verbs in Frameworks wie diesem. Etwas generell wie '' oder 'name = '_ method'' – Blake

+0

@Blake Das wäre toll, wenn es da wäre. – user1032531

+0

Haben Sie das gelesen: http://docs.slimframework.com/routing/put/ - Bezieht sich auf die versteckte Eingabe benötigt, um das Verb dort zu ändern – Blake

Antwort

0

Basierend auf Blakes Kommentaren, habe ich die folgende Methode erstellt und in einem Konstruktor aufgerufen. Nach jeder Anfrage wird eine neue Testdatei erstellt, die debuggen kann.

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

Wenn Sie benötigen Debug-Informationen im Falle Ausnahme:

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

auch Sie können mit Firebug + FirePHP wie hier erklärt: https://www.sitepoint.com/debug-php-firebug-firephp/

Tracy
aber Ich mag die Schnittstelle von der Fehlersuche, also fand ich etwas in der Art: https://github.com/nette/tracy

Dieser Kern

Kasse: https://gist.github.com/1f7/b2d2846777e71f48e43a2ef7acc0a655 (es hat wenig Fehler im Beispiel, aber Sie können damit umgehen)

Demo ist hier: https://nette.github.io/tracy/tracy-debug-bar.html

Screenshots von meiner Testimplementierung:

screenshot



aber ich empfehle Ihnen wirklich, normale IDE wie PHPStorm zu verwenden und Ihre App wie ein Chef zu debuggen (:

Uhr: https://www.youtube.com/watch?v=rqDDJfG6ip4 oder dies: https://www.youtube.com/watch?v=_U8xrj0-PXU

P. S. für Frage von Tracy richtig konfiguriert haben, schreiben in Kommentar (;

0

Slim3 Tracy gist zu Slim3 Debug Bar package

here

Slim3 Debug Bar Weitere Screenshots erhöht

und ich stimme - PhpStorm für Debug besser ist, aber schnell zu entdecken.. vars leichter in Tracy.

in naher Zukunft planen hinzufügen Echo Console (JQuery Terminal) Slim3 Debug Bar Terminal example