国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Key Takeaways
psysh zur Rettung
Demo -App
Debugging in cli
Schlussfolgerung
h?ufig gestellte Fragen (FAQs) zum interaktiven PHP -Debuggen mit Psysh
Was ist Psysh und wie funktioniert es beim PHP-Debuggen? Es bietet eine interaktive Befehlszeilenschnittstelle, in der Sie PHP-Code ausführen und die Ausgabe sofort ansehen k?nnen. PSYSH ist besonders nützlich für das Debuggen, da Sie Ihren Code durchlaufen, Variablen inspizieren und ?nderungen interaktiv testen k?nnen. Es ist, als würde man ein Gespr?ch mit Ihrem Code führen, was zu einer besseren Verst?ndnis und einer schnelleren Fehleraufl?sung führen kann. Abh?ngigkeitsmanagement -Tool für PHP. Sie k?nnen es installieren, indem Sie den Befehlskomponisten Global ausführen. Erfordert Psy/Psysh. Nach der Installation k?nnen Sie PsySH starten, indem Sie Psysh einfach in Ihr Terminal eingeben. Stellen Sie sicher Sie k?nnen Psysh () einfügen; Zu jedem Zeitpunkt in Ihrem Code, in dem Sie eine interaktive Debugging -Sitzung starten m?chten. Wenn Ihre Codeausführung diesen Punkt erreicht, ?ffnet PsySH eine interaktive Shell, sodass Sie Variablen überprüfen, Code ausführen und Ihre Codeausführung durchführen k?nnen.
Was sind einige erweiterte Funktionen von Psysh? Dazu geh?ren Codeausführung mit Laufzeit, automatische Semikolon -Einfügung, Namespace -Support, Readline -Unterstützung, Ausnahmebehandlung und vieles mehr. PSYSH unterstützt auch die Registerkartenvervollst?ndigung für Variablen, Funktionen, Klassen und sogar PHP-integrierte Schlüsselw?rter. Wenn ein Fehler oder eine Ausnahme auftritt, zeigt PsySH eine detaillierte Stapelverfolgung an, die Ihnen hilft, genau zu verstehen, wo und warum der Fehler aufgetreten ist. Sie k?nnen auch den WTF -Befehl verwenden, um die letzte Ausnahmestapelverfolgung jederzeit anzuzeigen.
Wie kann ich zum PsySH-Projekt beitragen? Sie k?nnen zum Projekt beitragen, indem Sie Fehler melden, Funktionen vorschlagen oder Pull -Anfragen senden. Lesen Sie vor dem Beitrag die beitragenden Richtlinien des Projekts. über Psysh. Dazu geh?ren detaillierte Dokumentation, Verwendungsbeispiele und eine Liste der verfügbaren Befehle. Sie k?nnen auch Tutorials und Artikel in verschiedenen PHP- und Entwicklerblogs finden.
Heim Backend-Entwicklung PHP-Tutorial Interaktives PHP -Debuggen mit Psysh

Interaktives PHP -Debuggen mit Psysh

Feb 19, 2025 am 10:15 AM

Interaktives PHP -Debuggen mit Psysh

Es ist 1:00 Uhr, die Frist für die Lieferung Ihrer Webanwendung betr?gt 8 Stunden ... und es funktioniert nicht. Wenn Sie versuchen herauszufinden, was los ist, füllen Sie Ihren Code mit var_dump () und sterben () überall, um zu sehen, wo der Fehler ist…

Sie sind ver?rgert. Jedes Mal, wenn Sie einen Rückgabewert oder eine variable Zuordnung ausprobieren m?chten, müssen Sie Ihren Quellcode ?ndern, Ihre Anwendung ausführen und die Ergebnisse sehen. Am Ende sind Sie sich nicht sicher, ob Sie alle diese var_dumps entfernt haben oder nicht der Code. Ist Ihnen diese Situation bekannt?

Key Takeaways

  • psysh ist ein leistungsstarkes ReP -Tool für PHP, das das Debugging durch sofortige Interaktion und Ausführung von PHP -Code verbessert, ?hnlich einer JavaScript -Konsole in einem Browser.
  • Die Installation von PSYSH kann weltweit oder pro Projekt mit Composer durchgeführt werden und unterstützt eine Reihe von Befehlen zur überprüfung und Manipulation des Code zur Laufzeit.
  • Durch die Verwendung von Befehlen wie "ls", "show" und "help" k?nnen Entwickler Variablen inspizieren, Methodendefinitionen anzeigen und detaillierte Informationen über den Code direkt in der Konsole erhalten.
  • psysh kann direkt in PHP -Skripte oder Unit -Tests integriert werden, um eine Live -Debugging -Umgebung bereitzustellen, die besonders nützlich ist, um Fehler in komplexen Anwendungen zu identifizieren und zu beheben.
  • Das Tool bietet ein nahtloses Debugging-Erlebnis sowohl in Befehlszeilenschnittstellen als auch in integrierten PHP-Webservern, obwohl es nicht mit externen Webservern wie Apache kompatibel ist.

psysh zur Rettung

psysh ist eine Read-Eval-Print-Schleife (oder Reply). M?glicherweise haben Sie zuvor eine Reply über die JavaScript -Konsole Ihres Browsers verwendet. Wenn Sie haben, wissen Sie, dass es viel Macht besitzt und nützlich sein kann, w?hrend Sie Ihren JS -Code debuggen.

Wenn Sie über PHP sprechen, haben Sie m?glicherweise zuvor die interaktive Konsole von PHP (PHP -A) verwendet. Dort k?nnen Sie einen Code schreiben und die Konsole wird ihn ausführen, sobald Sie die Eingabetaste drücken:

php -a
Interactive shell

php > $a = 'Hello world!';
php > echo $a;
Hello world!
php >

Leider ist die interaktive Hülle keine Repon, da sie das ?P“ fehlt (Druck). Ich musste eine Echo -Erkl?rung ausführen, um den Inhalt von $ a zu sehen. In einer echten Reply h?tten wir es unmittelbar nach der Zuweisung des Werts gesehen.

Sie k?nnen PSYSH entweder mit einem Komponisten -G -Forderungsanweis oder des Herunterladens der ausführbaren PSYSH -Datei:

installieren:

Komponist
composer g require psy/psysh:~0.1
psysh

Direkter Download (Linux/Mac)
wget psysh.org/psysh
chmod +x psysh
./psysh

Zus?tzlich k?nnen Sie es pro Projekt mit Composer aufnehmen, wie Sie sp?ter in diesem Artikel sehen werden.

Lassen Sie uns jetzt ein wenig mit Psysh spielen.
./psysh                                                                                                                                             

Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman                                                                                                                                                                              
>>>

Die Haupthilfe wird Ihr bester Freund sein. Das gibt Ihnen alle m?glichen Befehle und ihre Erkl?rungen:
>>> help

  help      Show a list of commands. Type `help [foo]` for information about [foo].      Aliases: ?
  
  ls        List local, instance or class variables, methods and constants.              Aliases: list, dir
  
  dump      Dump an object or primitive.
  
  doc       Read the documentation for an object, class, constant, method or property.   Aliases: rtfm, man 
  
  show      Show the code for an object, class, constant, method or property.
  
  wtf       Show the backtrace of the most recent exception.                             Aliases: last-exception, wtf?
  
  trace     Show the current call stack.
  
  buffer    Show (or clear) the contents of the code input buffer.                       Aliases: buf
  
  clear     Clear the Psy Shell screen.
  
  history   Show the Psy Shell history.
  
  exit      End the current session and return to caller.                                Aliases: quit, q
>>> help ls

Usage:

ls [--vars] [-c|--constants] [-f|--functions] [-k|--classes] [-I|--interfaces] [-t|--traits] [-p|--properties] [-m|--methods] [-G|--grep="..."] [-i|--insensitive] [-v|--invert] [-g|--globals] [-n|--internal] [-u|--user] [-C|--
category="..."] [-a|--all] [-l|--long] [target]

Aliases: list, dir

Arguments:

 target             A target class or object to list.
 
 
Options:

 --vars             Display variables.
 
 --constants (-c)   Display defined constants.
 
 --functions (-f)   Display defined functions.
 
 --classes (-k)     Display declared classes.
 
 --interfaces (-I)  Display declared interfaces.
 
 --traits (-t)      Display declared traits.
 
 --properties (-p)  Display class or object properties (public properties by default).
 
 --methods (-m)     Display class or object methods (public methods by default).
 
 --grep (-G)        Limit to items matching the given pattern (string or regex).
 
 --insensitive (-i) Case-insensitive search (requires --grep).
 
 --invert (-v)      Inverted search (requires --grep).
 
 --globals (-g)     Include global variables.
 
 --internal (-n)    Limit to internal functions and classes.
 
 --user (-u)        Limit to user-defined constants, functions and classes.
 
 --category (-C)    Limit to constants in a specific category (e.g. "date").
 
 --all (-a)         Include private and protected methods and properties.
 
 --long (-l)        List in long format: includes class names and method signatures.
 
 
 Help:
 
 List variables, constants, classes, interfaces, traits, functions, methods, and properties.
 
 Called without options, this will return a list of variables currently in scope.
 
 If a target object is provided, list properties, constants and methods of that target. If a class, interface or trait name is passed instead, list constants and methods on that class.
 
 e.g. 
 
 >>> ls
 >>> ls $foo
 >>> ls -k --grep mongo -i
 >>> ls -al ReflectionClass
 >>> ls --constants --category date
 >>> ls -l --functions --grep /^array_.*/
 >>>

im Grunde genommen kann eine Replikation tun:
<span>>>> $a = 'hello';
</span><span>=> "hello"
</span><span>>>></span>

Bitte beachten Sie, dass PsySH den $ a -Wert druckt, sobald er zugewiesen ist, wenn wir PsySH mit der interaktiven Konsole von PHP vergleichen.

Ein komplexeres Beispiel kann wie folgt sein:

php -a
Interactive shell

php > $a = 'Hello world!';
php > echo $a;
Hello world!
php >

Ich habe die Funktion Say () definiert und sie aufgerufen. Diese beiden Null, die Sie sehen, sind, weil weder die Funktionsdefinition noch ihre Ausführung einen Wert zurückgegeben haben (die Funktion spiegelt den Wert an). W?hrend der Definition der Funktion ?nderte sich die Eingabeaufforderung von >>> zu ....

K?nnen wir eine Klasse definieren und sie instanziieren?

composer g require psy/psysh:~0.1
psysh

Wenn ich Foo instanziierte, gab der Konstruktor einen Verweis auf das Objekt zurück. Aus diesem Grund druckte Psysh . Lassen Sie uns nun sehen, was an Psysh und Objekten interessant ist.

wget psysh.org/psysh
chmod +x psysh
./psysh

Wenn Sie zuf?llig vergessen haben, welche Methoden die Klasse Foo definiert hat, haben Sie jetzt die Antwort. Haben Sie eine Linux -OS- oder Mac -Befehlszeilenschnittstelle verwendet? Dann sind Sie mit dem LS -Befehl vertraut. Erinnere dich an die -la -Optionen?

./psysh                                                                                                                                             

Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman                                                                                                                                                                              
>>>

sü?, nicht wahr?

Die wahre Leistung von

psysh leuchtet bei Integration in eine Webanwendung. Erstellen wir also eine.

Demo -App

Ich werde eine kurze Anwendung implementieren, um das Designmuster des Dekorationsdesigns zu pr?sentieren. Das UML -Klassendiagramm eines solchen Musters lautet wie folgt:
Interaktives PHP -Debuggen mit Psysh

Machen Sie sich keine Sorgen, wenn Sie nicht viel über UML- oder Designmuster wissen. Für diesen Artikel ist es nicht erforderlich, sie zu verstehen.

Auch für dieses Projekt habe ich eine Reihe von Testf?llen erstellt. Diese Testf?lle k?nnen von Phpunit durchgeführt werden. Auch hier müssen Sie mit Unit -Tests nicht vertraut sein, um diesen Artikel zu verstehen.

Der vollst?ndige Quellcode für diese kleine Anwendung finden Sie unter https://github.com/sitepoint-examples/psysh

Definieren wir unsere Datei Composer.json, um eine Abh?ngigkeit von PsySH zu erkl?ren:

>>> help

  help      Show a list of commands. Type `help [foo]` for information about [foo].      Aliases: ?
  
  ls        List local, instance or class variables, methods and constants.              Aliases: list, dir
  
  dump      Dump an object or primitive.
  
  doc       Read the documentation for an object, class, constant, method or property.   Aliases: rtfm, man 
  
  show      Show the code for an object, class, constant, method or property.
  
  wtf       Show the backtrace of the most recent exception.                             Aliases: last-exception, wtf?
  
  trace     Show the current call stack.
  
  buffer    Show (or clear) the contents of the code input buffer.                       Aliases: buf
  
  clear     Clear the Psy Shell screen.
  
  history   Show the Psy Shell history.
  
  exit      End the current session and return to caller.                                Aliases: quit, q

Nach einer Komponist -Installation sollten Sie gut gehen.

Sehen Sie sich den folgenden Quellcode von der Datei public/decorator.php an. Es wird die SimpleWindow, DecoratedWindow und Titelwindow -Objekte instanziieren, um das Dekorateurmuster zu pr?sentieren:

>>> help ls

Usage:

ls [--vars] [-c|--constants] [-f|--functions] [-k|--classes] [-I|--interfaces] [-t|--traits] [-p|--properties] [-m|--methods] [-G|--grep="..."] [-i|--insensitive] [-v|--invert] [-g|--globals] [-n|--internal] [-u|--user] [-C|--
category="..."] [-a|--all] [-l|--long] [target]

Aliases: list, dir

Arguments:

 target             A target class or object to list.
 
 
Options:

 --vars             Display variables.
 
 --constants (-c)   Display defined constants.
 
 --functions (-f)   Display defined functions.
 
 --classes (-k)     Display declared classes.
 
 --interfaces (-I)  Display declared interfaces.
 
 --traits (-t)      Display declared traits.
 
 --properties (-p)  Display class or object properties (public properties by default).
 
 --methods (-m)     Display class or object methods (public methods by default).
 
 --grep (-G)        Limit to items matching the given pattern (string or regex).
 
 --insensitive (-i) Case-insensitive search (requires --grep).
 
 --invert (-v)      Inverted search (requires --grep).
 
 --globals (-g)     Include global variables.
 
 --internal (-n)    Limit to internal functions and classes.
 
 --user (-u)        Limit to user-defined constants, functions and classes.
 
 --category (-C)    Limit to constants in a specific category (e.g. "date").
 
 --all (-a)         Include private and protected methods and properties.
 
 --long (-l)        List in long format: includes class names and method signatures.
 
 
 Help:
 
 List variables, constants, classes, interfaces, traits, functions, methods, and properties.
 
 Called without options, this will return a list of variables currently in scope.
 
 If a target object is provided, list properties, constants and methods of that target. If a class, interface or trait name is passed instead, list constants and methods on that class.
 
 e.g. 
 
 >>> ls
 >>> ls $foo
 >>> ls -k --grep mongo -i
 >>> ls -al ReflectionClass
 >>> ls --constants --category date
 >>> ls -l --functions --grep /^array_.*/
 >>>

Wir k?nnen den Code über PHP -CLI (Befehlszeilenschnittstelle) oder über einen Webserver ausführen, wenn einer konfiguriert ist. Wir k?nnen auch den internen Webserver von PHP verwenden.

Debugging in cli

Die Ausführung des obigen Codes über die Befehlszeilenschnittstelle sieht so aus:

<span>>>> $a = 'hello';
</span><span>=> "hello"
</span><span>>>></span>

Wie k?nnen wir mit Psysh interagieren? Fügen Sie einfach psyshell :: debug (get_defined_vars ()) hinzu; überall auf dem Code, in dem Sie Ihre Anwendung debuggen, in der Regel einfügen Sie eine Anweisung var_dump ():

>>> function say($a) {
...     echo $a;
... }
=> null
>>> say('hello');
hello
=> null
>>>

Nach dem Speichern der Datei erhalten wir die folgende Ausgabe:

>>> class Foo
... {
...     protected $a;
...
...     public function setA($a) {
...         $this->a = $a;
...     }
...
...     public function getA() {
...         return $this->a;
...     }
... }
=> null
>>> $foo = new Foo();
=> <Foo #000000001dce50dd000000002dda326e> {}
>>> $foo->setA('hello');
=> null
>>> $foo->getA();
=> "hello"
>>>

Die Ausführung des Skripts wird suspendiert, und wir haben jetzt PsySHs Aufforderung zum Spielen. Ich bestehe Get_Defined_vars () als Parameter an psyshell :: debug (), also habe ich Zugriff auf alle definierten Variablen in der Shell:

>>> ls $foo
Class Methods: getA, setA
>>>

untersuchen wir die $ -Ffenstervariable:

php -a
Interactive shell

php > $a = 'Hello world!';
php > echo $a;
Hello world!
php >

Etwas Sch?nes, wenn es darum geht, Psysh in einer Anwendung zu haben, ist, dass wir den Quellcode eines instanziierten Objekts untersuchen k?nnen.

composer g require psy/psysh:~0.1
psysh

$ sofenster ist eine Instanz von SimpleWindow, die die Fensterschnittstelle implementiert. Ich frage mich, wie der Quellcode für die Fensterschnittstelle aussieht…

wget psysh.org/psysh
chmod +x psysh
./psysh

Warum haben SimpleWindow und DecoratedWindow die gleiche Ausgabe? Untersuchen wir das $ decoratedWindow -Objekt.

./psysh                                                                                                                                             

Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman                                                                                                                                                                              
>>>

Dieses Objekt ist "schwerer" als der SimpleWindow -

>>> help

  help      Show a list of commands. Type `help [foo]` for information about [foo].      Aliases: ?
  
  ls        List local, instance or class variables, methods and constants.              Aliases: list, dir
  
  dump      Dump an object or primitive.
  
  doc       Read the documentation for an object, class, constant, method or property.   Aliases: rtfm, man 
  
  show      Show the code for an object, class, constant, method or property.
  
  wtf       Show the backtrace of the most recent exception.                             Aliases: last-exception, wtf?
  
  trace     Show the current call stack.
  
  buffer    Show (or clear) the contents of the code input buffer.                       Aliases: buf
  
  clear     Clear the Psy Shell screen.
  
  history   Show the Psy Shell history.
  
  exit      End the current session and return to caller.                                Aliases: quit, q
Die GetWindowReference () -Methode wird aufgerufen, und dann wird das Ergebnis aus der Render () -Methode zurückgegeben. überprüfen Sie die GetWindowReference () Quelle:

>>> help ls

Usage:

ls [--vars] [-c|--constants] [-f|--functions] [-k|--classes] [-I|--interfaces] [-t|--traits] [-p|--properties] [-m|--methods] [-G|--grep="..."] [-i|--insensitive] [-v|--invert] [-g|--globals] [-n|--internal] [-u|--user] [-C|--
category="..."] [-a|--all] [-l|--long] [target]

Aliases: list, dir

Arguments:

 target             A target class or object to list.
 
 
Options:

 --vars             Display variables.
 
 --constants (-c)   Display defined constants.
 
 --functions (-f)   Display defined functions.
 
 --classes (-k)     Display declared classes.
 
 --interfaces (-I)  Display declared interfaces.
 
 --traits (-t)      Display declared traits.
 
 --properties (-p)  Display class or object properties (public properties by default).
 
 --methods (-m)     Display class or object methods (public methods by default).
 
 --grep (-G)        Limit to items matching the given pattern (string or regex).
 
 --insensitive (-i) Case-insensitive search (requires --grep).
 
 --invert (-v)      Inverted search (requires --grep).
 
 --globals (-g)     Include global variables.
 
 --internal (-n)    Limit to internal functions and classes.
 
 --user (-u)        Limit to user-defined constants, functions and classes.
 
 --category (-C)    Limit to constants in a specific category (e.g. "date").
 
 --all (-a)         Include private and protected methods and properties.
 
 --long (-l)        List in long format: includes class names and method signatures.
 
 
 Help:
 
 List variables, constants, classes, interfaces, traits, functions, methods, and properties.
 
 Called without options, this will return a list of variables currently in scope.
 
 If a target object is provided, list properties, constants and methods of that target. If a class, interface or trait name is passed instead, list constants and methods on that class.
 
 e.g. 
 
 >>> ls
 >>> ls $foo
 >>> ls -k --grep mongo -i
 >>> ls -al ReflectionClass
 >>> ls --constants --category date
 >>> ls -l --functions --grep /^array_.*/
 >>>
Diese Methode gibt die Fensterreferenzeigenschaft des Objekts zurück, und wie wir aus dem obigen LS -Al -Befehl gesehen haben, handelt es sich um eine Instanz von AcmePattersDeCoratorsimpleWindow. Natürlich h?tten wir uns nur ansehen k?nnen, wie dekoriert :: __ construct () funktioniert, aber dies ist eine andere M?glichkeit, die wir überprüfen k?nnen.

Debuggen mit dem eingebetteten Server

Leider wird das Debuggen durch einen Webserver wie Apache nicht unterstützt. Wir k?nnen jedoch unsere Anwendung mit dem eingebetteten Server von PHP debuggen:

<span>>>> $a = 'hello';
</span><span>=> "hello"
</span><span>>>></span>
Der Entwicklungsserver h?rt jetzt nach Verbindungen auf Port 8080. Sobald wir die Datei Decorator.php über diesen Webserver anfordern (https: // localhost: 8080/dekorator.php) sollten wir Folgendes sehen:

>>> function say($a) {
...     echo $a;
... }
=> null
>>> say('hello');
hello
=> null
>>>
Wir k?nnen mit Psysh mit dem Cli

mit Psysh spielen

>>> class Foo
... {
...     protected $a;
...
...     public function setA($a) {
...         $this->a = $a;
...     }
...
...     public function getA() {
...         return $this->a;
...     }
... }
=> null
>>> $foo = new Foo();
=> <Foo #000000001dce50dd000000002dda326e> {}
>>> $foo->setA('hello');
=> null
>>> $foo->getA();
=> "hello"
>>>
Debugging mit Unit -Tests

Als guter Entwickler sollten Sie Unit -Tests für Ihren Code als Beweis dafür schreiben, dass er wie erwartet funktioniert. In den Dateien des Projekts finden Sie den Ordner Tests. Wenn Sie Phpunit installiert haben, k?nnen Sie die Tests darin ausführen.

>>> ls $foo
Class Methods: getA, setA
>>>
Obwohl der Code fehlerfrei zu laufen scheint, f?llt ein Test aus. Wir k?nnen weiter untersuchen, indem wir nur den fehlerhaften Test ausführen:

>>> ls -la $foo
Class Properties:

  $a   "hello" 
  

Class Methods:

  getA   public function getA()
  setA   public function setA($a)
Wir haben den Test, die Datei und die Zeile, in der der Fehler generiert wird. Schauen wir uns einen Titel "titwindowtest.php

" an

{
    "name": "example/psysh",
    "authors": [
        {
            "name": "John Doe",
            "email": "john@doe.tst"
        }
    ],
    "require": {
        "psy/psysh": "~0.1"
    },
    "autoload": {
        "psr-4": {"Acme\": "src/"}
    }
}
Wenn Sie mit Phpunit nicht vertraut sind, achten Sie dem Code nicht zu viel Aufmerksamkeit. Kurz gesagt, ich richte alles ein, um die mit dem Titel geplante Methode zu testen und zu erwarten, einen nicht leeren Wert zu erhalten.

Wie k?nnen wir Psysh verwenden, um zu überprüfen, was los ist? Fügen Sie einfach die Shell :: Debug () -Methode hinzu, wie wir es zuvor getan haben.

<span><span><?php
</span></span><span><span>chdir(dirname(__DIR__));
</span></span><span>
</span><span><span>require_once('vendor/autoload.php');
</span></span><span>
</span><span><span>use Acme<span>\Patterns\Decorator\SimpleWindow</span>;
</span></span><span><span>use Acme<span>\Patterns\Decorator\DecoratedWindow</span>;
</span></span><span><span>use Acme<span>\Patterns\Decorator\TitledWindow</span>;
</span></span><span>
</span><span><span>echo PHP_EOL . 'Simple Window' . PHP_EOL;
</span></span><span>
</span><span><span>$window = new SimpleWindow();
</span></span><span>
</span><span><span>echo $window->render();
</span></span><span>
</span><span><span>echo PHP_EOL . 'Decorated Simple Window' . PHP_EOL;
</span></span><span>
</span><span><span>$decoratedWindow = new DecoratedWindow($window);
</span></span><span>
</span><span><span>echo $decoratedWindow->render();
</span></span><span>
</span><span><span>echo PHP_EOL . 'Titled Simple Window' . PHP_EOL;
</span></span><span>
</span><span><span>$titledWindow = new TitledWindow($window);
</span></span><span>
</span><span><span>echo $titledWindow->render();</span></span>
Wir sind bereit zu rocken!

php public/decorator.php 

Simple Window
+-------------+
|             |
|             |
|             |
|             |
|             |
+-------------+

Decorated Simple Window
+-------------+
|             |
|             |
|             |
|             |
|             |
+-------------+

Titled Simple Window
+-------------+
|Title        |
+-------------+
|             |
|             |
|             |
|             |
|             |
+-------------+
In $ rs sollten wir also eine Zeichenfolge haben; Mal sehen, was wir wirklich haben.

<span><span><?php
</span></span><span><span>chdir(dirname(__DIR__));
</span></span><span>
</span><span><span>require_once('vendor/autoload.php');
</span></span><span>
</span><span><span>//... a lot of code here
</span></span><span>
</span><span><span>$titledWindow = new TitledWindow($window);
</span></span><span>
</span><span><span>echo $titledWindow->render();
</span></span><span>
</span><span><span><span>\Psy\Shell</span>::debug(get_defined_vars()); //we want to debug our application here!</span></span>
Nullwert, kein Wunder, dass der Test fehlgeschlagen ist. überprüfen Sie den Quellcode von Titelwindow :: Addtitle (). Wenn wir einen LS -Befehl ausführen, k?nnen wir sehen, dass die Methode dieses Objekts über das $ titledWindow -Objekt verfügbar ist.

php -a
Interactive shell

php > $a = 'Hello world!';
php > echo $a;
Hello world!
php >

Da ist der Fehler. Die Methode wiederholt den Wert, anstatt ihn zurückzugeben. Obwohl die Anwendung richtig zu funktionieren scheint, haben wir durch Unit -Tests und Psysh einen Defekt entdeckt und k?nnen ihn jetzt beheben.

Schlussfolgerung

Dieser Artikel sollte nicht ersch?pfend sein, um alle potenziellen Psysh zu pr?sentieren. Es gibt andere coole Funktionen (wie "doc"), die Sie ausprobieren sollten. Psysh allein ist vielleicht nicht sehr nützlich, aber in Kombination mit anderen Tools und Ihren cleveren Debugging -Kr?ften kann es sich als wertvolles Kapital erweisen.

h?ufig gestellte Fragen (FAQs) zum interaktiven PHP -Debuggen mit Psysh

Was ist Psysh und wie funktioniert es beim PHP-Debuggen? Es bietet eine interaktive Befehlszeilenschnittstelle, in der Sie PHP-Code ausführen und die Ausgabe sofort ansehen k?nnen. PSYSH ist besonders nützlich für das Debuggen, da Sie Ihren Code durchlaufen, Variablen inspizieren und ?nderungen interaktiv testen k?nnen. Es ist, als würde man ein Gespr?ch mit Ihrem Code führen, was zu einer besseren Verst?ndnis und einer schnelleren Fehleraufl?sung führen kann. Abh?ngigkeitsmanagement -Tool für PHP. Sie k?nnen es installieren, indem Sie den Befehlskomponisten Global ausführen. Erfordert Psy/Psysh. Nach der Installation k?nnen Sie PsySH starten, indem Sie Psysh einfach in Ihr Terminal eingeben. Stellen Sie sicher Sie k?nnen Psysh () einfügen; Zu jedem Zeitpunkt in Ihrem Code, in dem Sie eine interaktive Debugging -Sitzung starten m?chten. Wenn Ihre Codeausführung diesen Punkt erreicht, ?ffnet PsySH eine interaktive Shell, sodass Sie Variablen überprüfen, Code ausführen und Ihre Codeausführung durchführen k?nnen.

Ja, PsySH kann sehr nützlich für Unit -Tests in PHP sein. Sie k?nnen PSYSH verwenden, um Ihre Tests interaktiv zu debuggen, Variablen zu inspizieren und zu einem bestimmten Zeitpunkt w?hrend der Testausführung zu bestimmen. Dies kann besonders nützlich sein, um zu verstehen, warum ein Test fehlschl?gt.

Wie kann ich die PSYSH -Konfiguration anpassen? Heimverzeichnis. In dieser Datei k?nnen Sie Konfigurationsoptionen wie Standardeinschluss, Fehlerebene und Befehlsverlaufsgr??e festlegen. Sie k?nnen auch benutzerdefinierte Befehle oder Reinigungsmittel hinzufügen.

Was sind einige erweiterte Funktionen von Psysh? Dazu geh?ren Codeausführung mit Laufzeit, automatische Semikolon -Einfügung, Namespace -Support, Readline -Unterstützung, Ausnahmebehandlung und vieles mehr. PSYSH unterstützt auch die Registerkartenvervollst?ndigung für Variablen, Funktionen, Klassen und sogar PHP-integrierte Schlüsselw?rter. Wenn ein Fehler oder eine Ausnahme auftritt, zeigt PsySH eine detaillierte Stapelverfolgung an, die Ihnen hilft, genau zu verstehen, wo und warum der Fehler aufgetreten ist. Sie k?nnen auch den WTF -Befehl verwenden, um die letzte Ausnahmestapelverfolgung jederzeit anzuzeigen.

Kann ich Psysh mit meinem bevorzugten PHP -Framework verwenden? einschlie?lich Laravel, Symfony und Zend Framework. Einige Frameworks wie Laravel enthalten sogar Psysh für ihren Bastelbefehl.

Wie kann ich zum PsySH-Projekt beitragen? Sie k?nnen zum Projekt beitragen, indem Sie Fehler melden, Funktionen vorschlagen oder Pull -Anfragen senden. Lesen Sie vor dem Beitrag die beitragenden Richtlinien des Projekts. über Psysh. Dazu geh?ren detaillierte Dokumentation, Verwendungsbeispiele und eine Liste der verfügbaren Befehle. Sie k?nnen auch Tutorials und Artikel in verschiedenen PHP- und Entwicklerblogs finden.

Das obige ist der detaillierte Inhalt vonInteraktives PHP -Debuggen mit Psysh. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiere ich Authentifizierung und Autorisierung in PHP? Wie implementiere ich Authentifizierung und Autorisierung in PHP? Jun 20, 2025 am 01:03 AM

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Wie bleibe ich mit den neuesten PHP-Entwicklungen und Best Practices auf dem neuesten Stand? Wie bleibe ich mit den neuesten PHP-Entwicklungen und Best Practices auf dem neuesten Stand? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

Was ist PHP und warum wird es für die Webentwicklung verwendet? Was ist PHP und warum wird es für die Webentwicklung verwendet? Jun 23, 2025 am 12:55 AM

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Wie setzen Sie die PHP -Zeitzone? Wie setzen Sie die PHP -Zeitzone? Jun 25, 2025 am 01:00 AM

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren

Wie installiere ich PHP in meinem Betriebssystem (Windows, MacOS, Linux)? Wie installiere ich PHP in meinem Betriebssystem (Windows, MacOS, Linux)? Jun 20, 2025 am 01:02 AM

Die Methode zur Installation von PHP variiert vom Betriebssystem zum Betriebssystem. Im Folgenden sind die spezifischen Schritte aufgeführt: 1. Windows -Benutzer k?nnen mit XAMPP Pakete installieren oder manuell konfigurieren, XAMPP herunterladen und installieren, PHP -Komponenten ausw?hlen oder Umgebungsvariablen PHP hinzufügen. 2. MacOS -Benutzer k?nnen PHP über Homebrew installieren, den entsprechenden Befehl ausführen, um den Apache -Server zu installieren und zu konfigurieren. 3.. Linux -Benutzer (Ubuntu/Debian) k?nnen mit dem APT -Paket -Manager die Quelle aktualisieren und die allgemeinen Erweiterungen installieren und überprüfen, ob die Installation durch das Erstellen einer Testdatei erfolgreich ist.

Wie validiere ich die Benutzereingabe in PHP, um sicherzustellen, dass bestimmte Kriterien erfüllt? Wie validiere ich die Benutzereingabe in PHP, um sicherzustellen, dass bestimmte Kriterien erfüllt? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

Wie zerst?re ich eine Sitzung in PHP mit Session_Destroy ()? Wie zerst?re ich eine Sitzung in PHP mit Session_Destroy ()? Jun 20, 2025 am 01:06 AM

Um eine Sitzung in PHP vollst?ndig zu zerst?ren, müssen Sie zuerst Call Session_start () mit der Sitzung aufrufen und dann Session_Destroy () alle Sitzungsdaten l?schen. 1. Verwenden Sie zuerst Session_start (), um sicherzustellen, dass die Sitzung begonnen hat. 2. Rufen Sie dann Session_destroy () auf, um die Sitzungsdaten zu l?schen. 3.. Optional, aber empfohlen: manuell nicht festgelegt $ _Session Array, um globale Variablen zu l?schen; 4. L?schen Sie gleichzeitig Sitzungscookies, um zu verhindern, dass der Benutzer den Sitzungsstatus beibeh?lt. 5. Achten Sie schlie?lich darauf, den Benutzer nach der Zerst?rung umzuleiten und die Sitzungsvariablen sofort wieder zu verwenden, da sonst die Sitzung neu gestartet werden muss. Wenn Sie dies tun, wird sichergestellt, dass der Benutzer das System vollst?ndig verl?sst, ohne Restinformationen zu hinterlassen.

Was sind die besten Praktiken zum Schreiben von sauberem und wartbarem PHP -Code? Was sind die besten Praktiken zum Schreiben von sauberem und wartbarem PHP -Code? Jun 24, 2025 am 12:53 AM

Der Schlüssel zum Schreiben von sauberem und leicht zu machenden PHP-Code liegt in klarer Benennung, nach Standards, angemessene Struktur, nützlicher Kommentare und Testbarkeit. 1. Verwenden Sie klare Variablen, Funktionen und Klassennamen wie $ userData und calculatetotalprice (); 2. Folgen Sie dem PSR-12-Standard-Unified-Code-Stil; 3. Teilen Sie die Codestruktur gem?? den Verantwortlichkeiten und organisieren Sie sie mit MVC- oder Laravel-Katalogen im Stil. 4. Vermeiden Sie den Code im Nudelstil und teilen Sie die Logik in kleine Funktionen mit einer einzigen Verantwortung auf. 5. Kommentare an Schlüsselpunkten hinzufügen und Schnittstellendokumente schreiben, um Parameter, Rückgabewerte und Ausnahmen zu kl?ren. 6. Verbesserung der Prüfbarkeit, Abh?ngigkeitsinjektion, reduzieren Sie den globalen Zustand und die statischen Methoden. Diese Praktiken verbessern die Codequalit?t, die Effizienz der Zusammenarbeit und die Nachverdauerung nach der Wartung.

See all articles