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
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 vonpsysh 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:
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, qDie 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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

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

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

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

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

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.

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

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.

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.
