Il est 1 h 00, la date limite de la livraison de votre application Web est dans 8 heures… et cela ne fonctionne pas. Alors que vous essayez de comprendre ce qui se passe, vous remplissez votre code avec var_dump () et die () partout pour voir où se trouve le bogue…
vous êtes ennuyé. Chaque fois que vous souhaitez essayer une valeur de retour ou une affectation de variable, vous devez modifier votre code source, exécuter votre application et voir les résultats… En fin de compte, vous n'êtes pas sûr de savoir si vous avez supprimé tous ces var_dumps de le code. Cette situation vous est-elle familière?
Les plats clés
- PSYSH est un puissant outil de remplacement pour PHP qui améliore le débogage en permettant une interaction immédiate et une exécution du code PHP, similaire à une console JavaScript dans un navigateur.
- L'installation de PSYSH peut être effectuée à l'échelle mondiale ou par projet à l'aide de Composer, et il prend en charge un tableau de commandes d'inspection et de manipulation du code à l'exécution.
- En utilisant des commandes comme «LS», «Show» et «Help», les développeurs peuvent inspecter les variables, afficher les définitions de méthode et obtenir des informations détaillées sur le code directement dans la console.
- psysh peut être intégré directement dans les scripts PHP ou les tests unitaires pour fournir un environnement de débogage en direct, ce qui est particulièrement utile pour identifier et corriger les bogues dans des applications complexes.
- L'outil offre une expérience de débogage transparent à la fois dans les interfaces de ligne de commande et les serveurs Web PHP intégrés, bien qu'il ne soit pas compatible avec des serveurs Web externes comme Apache.
psysh à la rescousse
Psysh est une boucle de lecture-EVAL (ou REPL). Vous avez peut-être utilisé un REPL avant via la console JavaScript de votre navigateur. Si vous l'avez fait, vous savez qu'il possède beaucoup de puissance et peut être utile lors de la débogage de votre code JS.
En parlant de PHP, vous avez peut-être déjà utilisé la console interactive de PHP (PHP -A). Là, vous pouvez écrire du code et la console l'exécutera dès que vous appuyez sur Entrée:
php -a Interactive shell php > $a = 'Hello world!'; php > echo $a; Hello world! php >
Malheureusement, le shell interactif n'est pas un REPT car il n'a pas le «P» (imprimé). J'ai dû exécuter une déclaration d'écho pour voir le contenu de $ a. Dans un vrai REP, nous l'aurions vu immédiatement après lui avoir attribué la valeur.
Vous pouvez installer Psysh globalement avec un compositeur G exiger, soit télécharger l'exécutable PSYSH:
Composer
composer g require psy/psysh:~0.1 psysh
Téléchargement direct (Linux / Mac)
wget psysh.org/psysh chmod +x psysh ./psysh
De plus, vous pouvez le faire inclure par projet avec Composer comme vous le verrez plus loin dans cet article.
Maintenant, jouons un peu avec Psysh.
./psysh Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman >>>
L'aide principale sera votre meilleur ami. C'est ce qui vous donnera toutes sortes de commandes et leurs explications:
>>> 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_.*/ >>>
Fondamentalement, ce qu'un REP peut faire est:
<span>>>> $a = 'hello'; </span><span>=> "hello" </span><span>>>></span>
Veuillez noter que si nous comparons PSYSH à la console interactive de PHP, PSYSH imprime la valeur $ A dès son attribution.
Un exemple plus complexe peut être le suivant:
php -a Interactive shell php > $a = 'Hello world!'; php > echo $a; Hello world! php >
J'ai défini la fonction Say () et je l'ai invoquée. Ces deux nuls que vous voyez sont parce que ni la définition de la fonction ni son exécution n'ont renvoyé une valeur (la fonction fait écho à la valeur). De plus, tout en définissant la fonction, l'invite est passée de >>> à ....
pouvons-nous définir une classe et l'instancier?
composer g require psy/psysh:~0.1 psysh
Lorsque j'ai instancié FOO, le constructeur a renvoyé une référence à l'objet. C'est pourquoi PSYSH imprimé
wget psysh.org/psysh chmod +x psysh ./psysh
Si par hasard, vous avez oublié quelles méthodes que la classe Foo a définies, vous avez maintenant la réponse. Avez-vous utilisé une interface de ligne de commande Linux OS ou Mac? Ensuite, vous connaissez peut-être la commande LS. Rappelez-vous les options -La?
./psysh Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman >>>
doux, n'est-ce pas?
La véritable puissance de PSYSH brille lorsqu'elle est intégrée à une application Web, alors créons une.
application de démonstration
Je vais implémenter une application rapide pour présenter le modèle de conception du décorateur. Le diagramme de classe UML d'un tel modèle est le suivant:
Ne vous inquiétez pas si vous ne savez pas grand-chose sur UML ou les modèles de conception, les comprendre n'est pas requis pour cet article.
Aussi pour ce projet, j'ai créé un ensemble de cas de test. Ces cas de test peuvent être exécutés par phpunit. Encore une fois, vous n'avez pas besoin de vous familiariser avec les tests unitaires pour comprendre cet article.
Le code source complet de cette petite application peut être trouvé sur https://github.com/sitepoint-examples/psysh
Tout d'abord, définissons notre fichier composer.json afin de déclarer une dépendance à Psysh:
>>> 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
Après une installation de compositeur, vous devriez être prêt à partir.
Veuillez jeter un œil au code source suivant du fichier public / décorateur.php. Il instanciera les objets SimpleWindow, DecoratedWindow et intitulé Window pour présenter le motif du décorateur:
>>> 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_.*/ >>>
Nous pouvons exécuter le code via CLI de PHP (interface de ligne de commande) ou via un serveur Web si l'on est configuré. Nous pouvons également utiliser le serveur Web interne de PHP.
Débogage dans CLI
L'exécution du code ci-dessus via l'interface de ligne de commande ressemblera à ceci:
<span>>>> $a = 'hello'; </span><span>=> "hello" </span><span>>>></span>
Comment pouvons-nous interagir avec PSYSH? Ajoutez simplement Psyshell :: Debug (get_defined_vars ()); n'importe où sur le code où vous souhaitez déboguer votre application, généralement où vous insérez une instruction var_dump ():
>>> function say($a) { ... echo $a; ... } => null >>> say('hello'); hello => null >>>
Après avoir enregistré le fichier, nous obtiendrons la sortie suivante:
>>> class Foo ... { ... protected $a; ... ... public function setA($a) { ... $this->a = $a; ... } ... ... public function getA() { ... return $this->a; ... } ... } => null >>> $foo = new Foo(); => <foo> {} >>> $foo->setA('hello'); => null >>> $foo->getA(); => "hello" >>></foo>
L'exécution du script sera suspendue, et nous avons maintenant l'invite de PSYSH pour jouer avec. Je passe get_defined_vars () en tant que paramètre à psyshell :: debug () donc j'ai accès à toutes les variables définies à l'intérieur de la coque:
>>> ls $foo Class Methods: getA, setA >>>
Examinons la variable de fenêtre $:
php -a Interactive shell php > $a = 'Hello world!'; php > echo $a; Hello world! php >
quelque chose de bien d'avoir Psysh dans une application est que nous pouvons examiner le code source d'un objet instancié.
composer g require psy/psysh:~0.1 psysh
Donc, $ Window est une instance de Simplewindow, qui implémente l'interface de la fenêtre… Je me demande à quoi ressemble le code source de l'interface de la fenêtre…
wget psysh.org/psysh chmod +x psysh ./psysh
Pourquoi Simplewindow et DecoratedWindow ont-ils la même sortie? Examinons l'objet $ décoré.
./psysh Psy Shell v0.1.11 (PHP 5.5.8 — cli) by Justin Hileman >>>
Cet objet est «plus lourd» que celui de Widlewindow, donc le code source peut être long… Voyons le code source de la méthode Render () uniquement:
>>> 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
La méthode getWindowReference () est invoquée, puis il renvoie le résultat de la méthode render (). Vérifions la source GetWindowReference ():
>>> 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_.*/ >>>
Cette méthode renvoie la propriété WindowReference de l'objet, et comme nous l'avons vu à partir de la commande ls -al ci-dessus, il s'agit d'une instance d'AcmepatternsdecoratorsImplewindow. Bien sûr, nous aurions pu voir comment fonctionne DecoratedWindow :: __ Construct (), mais c'est une autre façon de vérifier.
Débogage avec le serveur intégré
Malheureusement, le débogage à travers un serveur Web comme Apache n'est pas pris en charge. Cependant, nous pouvons déboguer notre application à l'aide du serveur intégré de PHP:
<span>>>> $a = 'hello'; </span><span>=> "hello" </span><span>>>></span>
Le serveur de développement écoute maintenant les connexions sur le port 8080, donc dès que nous demandons le fichier décorateur.php via ce serveur Web (https: // localhost: 8080 / décorateur.php), nous devrions voir ce qui suit:
>>> function say($a) { ... echo $a; ... } => null >>> say('hello'); hello => null >>>
Nous pouvons commencer à jouer avec Psysh comme nous l'avons fait avec le cli
>>> class Foo ... { ... protected $a; ... ... public function setA($a) { ... $this->a = $a; ... } ... ... public function getA() { ... return $this->a; ... } ... } => null >>> $foo = new Foo(); => <foo> {} >>> $foo->setA('hello'); => null >>> $foo->getA(); => "hello" >>></foo>
Débogage avec les tests unitaires
En tant que bon développeur, vous devez écrire des tests unitaires pour votre code comme preuve que cela fonctionne comme prévu. Dans les fichiers du projet, vous trouverez le dossier des tests, et si vous avez installé PHPUnit, vous pouvez exécuter les tests à l'intérieur.
>>> ls $foo Class Methods: getA, setA >>>
Même si le code semble s'exécuter parfaitement, un test échoue. Nous pouvons examiner davantage en exécutant uniquement le test d'échec:
>>> ls -la $foo Class Properties: $a "hello" Class Methods: getA public function getA() setA public function setA($a)
Nous avons le test, le fichier et la ligne où l'erreur est générée. Jetons un coup d'œil à TitedWindowTest.Php
{ "name": "example/psysh", "authors": [ { "name": "John Doe", "email": "john@doe.tst" } ], "require": { "psy/psysh": "~0.1" }, "autoload": { "psr-4": {"Acme\": "src/"} } }
Si vous n'êtes pas familier avec le phpunit, ne faites pas trop d'attention au code. En un mot, je configure tout pour tester la méthode intimewindow :: addtitle () et je m'attends à recevoir une valeur non vide.
Alors, comment utilisons-nous PSYSH pour vérifier ce qui se passe? Ajoutez simplement la méthode Shell :: Debug () comme nous l'avons fait précédemment.
<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></span>
Nous sommes prêts à basculer!
php public/decorator.php Simple Window +-------------+ | | | | | | | | | | +-------------+ Decorated Simple Window +-------------+ | | | | | | | | | | +-------------+ Titled Simple Window +-------------+ |Title | +-------------+ | | | | | | | | | | +-------------+
Donc, dans $ rs, nous devrions avoir une chaîne; Voyons ce que nous avons vraiment.
<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></span>
Valeur nul, pas étonnant que le test échoue… vérifions le code source de TitedWindow :: AddTitle (). Si nous effectuons une commande LS, nous pouvons voir que nous avons la méthode de cet objet disponible via l'objet $ intitulé.
php -a Interactive shell php > $a = 'Hello world!'; php > echo $a; Hello world! php >
Il y a le bug. La méthode fait écho à la valeur au lieu de la renvoyer. Même si l'application semble bien fonctionner, grâce à des tests unitaires et à Psysh, nous avons découvert un défaut et nous pouvons maintenant le réparer.
Conclusion
Cet article n'était pas censé être exhaustif dans la présentation de tout le potentiel de Psysh. Il existe d'autres fonctionnalités intéressantes (comme «Doc») que vous devriez essayer. Psysh seul n'est peut-être pas très utile, mais s'il est combiné avec d'autres outils et vos pouvoirs de débogage intelligents, cela peut s'avérer être un atout précieux.
Questions fréquemment posées (FAQ) sur le débogage interactif de PHP avec Psysh
Qu'est-ce que PSYSH et comment cela fonctionne-t-il dans le débogage de PHP?
PSYSH est une console de développeur d'exécution, un débogueur interactif et une boucle de lecture-Eval (REPL) pour PHP. Il fournit une interface de ligne de commande interactive où vous pouvez exécuter le code PHP et voir la sortie immédiatement. PSYSH est particulièrement utile pour le débogage car il vous permet de parcourir votre code, d'inspecter les variables et de tester interactivement les modifications. C'est comme avoir une conversation avec votre code, ce qui peut conduire à une meilleure compréhension et à une meilleure résolution de bogues.
Comment installer Psysh pour le débogage de PHP?
PSYSH peut être installé à l'aide d'un composer, un Outil de gestion des dépendances pour PHP. Vous pouvez l'installer en exécutant la Command Composer Global Exiger PSY / PSYSH. Après l'installation, vous pouvez démarrer PSYSH en tapant simplement Psysh dans votre terminal. Assurez-vous d'inclure les binaires Global Composer dans votre chemin afin que votre système puisse localiser l'exécutable PSYSH.
Comment puis-je utiliser PSYSH pour déboguer mon code PHP?
Pour déboguer votre code PHP à l'aide de PSYSH , vous pouvez insérer psysh (); À tout moment de votre code où vous souhaitez démarrer une session de débogage interactive. Lorsque l'exécution de votre code atteint ce point, PSYSH ouvrira un shell interactif, vous permettant d'inspecter les variables, d'exécuter du code et de parcourir l'exécution de votre code.
Puis-je utiliser PSYSH pour les tests unitaires dans PHP?
Oui, Psysh peut être très utile pour les tests unitaires en PHP. Vous pouvez utiliser PSYSH pour déboguer de manière interactive vos tests, inspecter les variables et l'état à tout moment de l'exécution du test. Cela peut être particulièrement utile pour comprendre pourquoi un test échoue.
Comment puis-je personnaliser la configuration de Psysh?
PSYSH vous permet de personnaliser sa configuration en créant un fichier .psysh.php dans votre Répertoire de la maison. Dans ce fichier, vous pouvez définir des options de configuration telles que les incluses par défaut, le niveau d'erreur et la taille de l'historique des commandes. Vous pouvez également ajouter des commandes ou des nettoyeurs personnalisés.
Quelles sont les fonctionnalités avancées de PSYSH?
PSYSH est livrée avec de nombreuses fonctionnalités avancées qui peuvent vous aider à déboguer votre code PHP plus efficacement. Il s'agit notamment de l'exécution de code avec l'exécution, de l'insertion automatique des demi-finales, de la prise en charge de l'espace de noms, de la prise en charge de la ligne de lecture, de la gestion des exceptions, etc. PSYSH prend également en charge l'achèvement de l'onglet pour les variables, les fonctions, les classes et même les mots clés intégrés PHP.
Comment PsySh gère-t-il les erreurs et les exceptions?
PSYSH a un mécanisme robuste d'erreur et de gestion des exceptions. Lorsqu'une erreur ou une exception se produit, PSYSH affichera une trace de pile détaillée, vous aidant à comprendre exactement où et pourquoi l'erreur s'est produite. Vous pouvez également utiliser la commande WTF pour afficher la dernière trace de pile d'exception à tout moment.
Puis-je utiliser Psysh avec mon framework PHP préféré?
Oui, Psysh fonctionne bien avec la plupart des frameworks PHP, y compris Laravel, Symfony et Zend Framework. Certains frameworks, comme Laravel, incluent même Psysh hors de la boîte pour leur commande Tinker.
Comment puis-je contribuer au projet PSYSH?
PSYSH est un projet open source hébergé sur github. Vous pouvez contribuer au projet en signalant des bogues, en suggérant des fonctionnalités ou en soumettant des demandes de traction. Avant de contribuer, assurez-vous de lire les directives de contribution du projet.
Où puis-je trouver plus de ressources pour en savoir plus sur Psysh?
Le site Web officiel de PSYSH et son référentiel GitHub sont les meilleurs endroits pour trouver des ressources À propos de Psysh. Ils comprennent une documentation détaillée, des exemples d'utilisation et une liste des commandes disponibles. Vous pouvez également trouver des tutoriels et des articles sur divers blogs PHP et développeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

PHP et Python sont tous deux des langages de programmation de haut niveau qui sont largement utilisés dans le développement Web, le traitement des données et les tâches d'automatisation. 1.Php est souvent utilisé pour créer des sites Web dynamiques et des systèmes de gestion de contenu, tandis que Python est souvent utilisé pour créer des cadres Web et une science des données. 2.PHP utilise Echo pour sortir du contenu, Python utilise l'impression. 3. Les deux prennent en charge la programmation orientée objet, mais la syntaxe et les mots clés sont différents. 4. PHP prend en charge la conversion de type faible, tandis que Python est plus strict. 5. L'optimisation des performances PHP comprend l'utilisation de la programmation OPCACH et asynchrone, tandis que Python utilise la programmation CPROFILE et asynchrone.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.