Les plats clés
- Phing est un outil de construction de projet PHP basé sur Apache Ant qui aide à automatiser les tâches telles que l'exécution des tests unitaires, l'application des modifications de la base de données et le déploiement du code d'application. Cela aide à prévenir les erreurs qui peuvent se produire dans les processus manuels, en particulier dans les flux de travail d'intégration continue.
- Phing utilise des fichiers XML pour définir les tâches. Ces tâches peuvent être regroupées en cibles, qui peuvent être invoquées individuellement ou dépendre d'autres cibles. Les tâches peuvent aller des actions simples comme faire écho à un message à des actions plus complexes comme le déploiement FTP. La phing permet également la création de tâches personnalisées.
- La phing n'est pas limitée aux opérations spécifiques à PHP mais peut également gérer les opérations spécifiques au cadre. Cela en fait un outil polyvalent pour tout projet PHP. Il aide également à automatiser le processus de déploiement, à gérer les erreurs et à générer une documentation.
Phing est un outil de construction de projet PHP basé sur Apache Ant. Un système de construction vous aide à effectuer un groupe d'actions en utilisant une seule commande. Si vous vous demandez pourquoi PHP a besoin d'un outil de construction, envisagez un flux de travail où vous écrivez du code et des tests unitaires sur votre machine locale, et si les tests passent, vous téléchargez le code sur serveur de stadification / production et apportez des modifications à la base de données de production. Sans fichier de construction, vous devrez passer par chaque étape manuellement. Si vous effectuez une intégration continue, vous ferez les mêmes étapes encore et encore. Il est trop facile d'omettre accidentellement quelque chose dans le processus et de se retrouver avec un problème grave dans la production. Le phing aide à surmonter ces problèmes en automatisant des tâches telles que l'exécution de tests unitaires, l'application des modifications de la base de données, le déploiement du code d'application, etc. Dans cet article, je vais vous montrer certaines des bases de la travail avec la phing.
Si vous ne l'avez pas déjà, vous pouvez installer des phing à l'aide de la poire:
shameer@yukon:~$ sudo pear channel-discover pear.phing.info
shameer@yukon:~$ sudo pear install phing/phing
Copier après la connexion
Copier après la connexion
Si vous souhaitez utiliser des tâches comme Phpunit ou PhpDocumentor, vous devrez également installer les packages dépendants.
Phing Hello World
Pour vous montrer à quel point il est facile de créer des fichiers de build pour la phing, commençons par un fichier de build «Hello World». Créez d'abord votre répertoire de projet, puis à l'intérieur, créez un fichier nommé build.xml avec le contenu suivant:
<span><?xml version="1.0" encoding="UTF-8"?>
</span><span><span><span><project</span> name<span>="HelloWorld"</span> default<span>="welcome"</span> basedir<span>="."</span> description<span>="a demo project"</span>></span>
</span> <span><span><span><property</span> name<span>="message"</span> value<span>="Hello World!"</span>/></span>
</span> <span><span><span><target</span> name<span>="welcome"</span>></span>
</span> <span><span><span><echo</span> msg<span>="${message}"</span>/></span>
</span> <span><span><span></target</span>></span>
</span><span><span><span></project</span>></span></span>
Copier après la connexion
Copier après la connexion
À partir de la ligne de commande, naviguez dans le répertoire et exécutez les phing.
shameer@yukon:~/HelloWorld$ phing
Buildfile: /home/shameer/HelloWorld/build.xml
HelloWorld > welcome:
[echo] Hello World!
BUILD FINISHED
Total time: 0.2275 seconds
Copier après la connexion
Copier après la connexion
L'élément
est l'élément racine du fichier de build. La valeur par défaut de l'attribut est requise et spécifie la cible par défaut à invoquer si l'on n'est pas fourni sur la ligne de commande. En dehors de cela, vous pouvez également spécifier le nom du projet, le répertoire de base de projet et une description pour aider à garder les choses organisées.
Le
L'élément représente un groupe nommé de tâches qui peuvent être effectuées. Par exemple, différentes cibles peuvent être définies pour effectuer une sauvegarde ou pour mettre à jour la base de données. Une cible peut également dépendre d'une autre cible qui doit être effectuée avant l'exécution.
L'élément est une tâche, une seule action qui peut être effectuée. Il existe un certain nombre de tâches de base en phing qui vont des tâches simples comme la création d'un répertoire à des tâches plus complexes comme l'exécution de transformations XSLT. Vous n'êtes cependant pas limité aux tâches que la phing fournit; Vous pouvez également créer des tâches personnalisées.
L'élément définit les valeurs nommées qui peuvent être utilisées plus tard dans le fichier de build. Pour référencer la valeur d'une propriété, spécifiez son nom entre «$ {» et «}«. Gardez à l'esprit que les noms de propriétés sont sensibles à la casse.
Il n'est pas obligatoire de nommer votre fichier build build.xml, mais Phing recherchera ce nom par défaut. Si vous utilisez un autre nom, vous devrez spécifier le fichier de build comme argument à la commande phing, par exemple:
shameer@yukon:~$ sudo pear channel-discover pear.phing.info
shameer@yukon:~$ sudo pear install phing/phing
Copier après la connexion
Copier après la connexion
Vous pouvez également invoquer des cibles autres que la par défaut en fournissant un ou plusieurs noms de cibles dans la ligne de commande:
<span><?xml version="1.0" encoding="UTF-8"?>
</span><span><span><span><project</span> name<span>="HelloWorld"</span> default<span>="welcome"</span> basedir<span>="."</span> description<span>="a demo project"</span>></span>
</span> <span><span><span><property</span> name<span>="message"</span> value<span>="Hello World!"</span>/></span>
</span> <span><span><span><target</span> name<span>="welcome"</span>></span>
</span> <span><span><span><echo</span> msg<span>="${message}"</span>/></span>
</span> <span><span><span></target</span>></span>
</span><span><span><span></project</span>></span></span>
Copier après la connexion
Copier après la connexion
plusieurs cibles
Amenons le script de construction et ajoutons des cibles supplémentaires. Par exemple, je suppose que la structure du répertoire suivant est en place pour le projet:
Mettre à jour build.xml
Donc ça ressemble maintenant à ceci:
shameer@yukon:~/HelloWorld$ phing
Buildfile: /home/shameer/HelloWorld/build.xml
HelloWorld > welcome:
[echo] Hello World!
BUILD FINISHED
Total time: 0.2275 seconds
Copier après la connexion
Copier après la connexion
Deux cibles ont été ajoutées, tester et construire, et la cible par défaut a été modifiée pour construire. Désormais, lorsque vous exécutez un phing à partir du répertoire du projet, il appellera la cible de build et, comme cette cible dépend de la cible de test, Phing exécutera d'abord la cible de test. La tâche invoque PHPUnit. Étant donné que le processus de construction ne doit pas continuer si l'un des tests unitaires échoue, son attribut haltonfailure a été défini. obtient les fichiers à inclure à partir de n'importe quel nombre d'éléments imbriqués.
Une fois que les tests unitaires s'exécutent avec succès, la cible de build copie les fichiers spécifiés dans son dans le répertoire de destination à l'aide de . Notez qu'au lieu de donner les noms de fichiers ici, un raffice est utilisé. Cela fait référence au déclaré précédemment avec l'ID SRCFiles. Il est utile de définir un ensemble de fichiers et de le référencer comme celui-ci lorsque vous avez des expressions régulières complexes ou devez vous référer aux mêmes fichiers à plusieurs endroits.
La tâche se connecte à un serveur distant à l'aide de FTP avec les informations d'identification données et transfère les fichiers spécifiés par l'ensemble de fichiers.
Résumé
Dans cet article, je vous ai présenté la phing de l'outil de construction PHP. Il y a beaucoup plus à phring que ce que j'ai discuté ici, par exemple, vous pouvez l'utiliser pour aider avec les migrations de base de données. Je recommande de lire l'excellente documentation de Phing pour voir tout ce que cet outil puissant peut faire.
image via dino o / shutterstock
Questions fréquemment posées (FAQ) sur l'utilisation de phing
Quelle est la structure de base d'un fichier de build de phing?
Un fichier de build de phing est un fichier XML qui définit les tâches à exécuter. Il commence par une balise qui inclut des attributs comme le nom, la valeur par défaut et la base. La balise définit une série de tâches qui peuvent être exécutées ensemble. Chaque tâche est représentée par une balise XML spécifique comme , , etc. Comment puis-je utiliser la phing pour une intégration continue?
PHING peut être utilisé dans l'intégration continue pour automatiser le processus de construction et de déploiement. Vous pouvez définir des tâches pour la lie de code, les tests unitaires, la génération de documentation, l'emballage du code et le déployer sur le serveur. Ces tâches peuvent être déclenchées automatiquement chaque fois qu'il y a un changement dans le référentiel de code.
Comment puis-je prolonger la phing avec des tâches personnalisées?
Phing vous permet de créer des tâches personnalisées en étendant la classe de tâches. Vous devez implémenter la méthode principale () où vous définissez le comportement de la tâche. Une fois la classe de tâches personnalisée créée, vous pouvez utiliser la balise dans le fichier de build pour enregistrer la tâche.
Quelles sont les différences entre la phing et d'autres outils de construction comme Ant ou Maven?
Phing est spécialement conçu pour les projets PHP, tandis que Ant et Maven sont pour Java. Phing utilise XML pour ses fichiers de construction comme ANT, mais il a des tâches intégrées pour les opérations spécifiques à PHP comme exécuter des tests PHPUnit ou générer une documentation PHPDocumentor. Maven, en revanche, utilise une approche de conguration conventionnelle et a un cycle de vie plus complexe.
Comment puis-je gérer les erreurs de phing?
Phing fournit plusieurs façons de gérer les erreurs. Vous pouvez utiliser la tâche pour arrêter le processus de construction si une certaine condition est remplie. Vous pouvez également utiliser la tâche pour prendre des exceptions et les gérer de manière appropriée. De plus, vous pouvez configurer le niveau de journalisation pour contrôler la quantité d'informations affichées lorsqu'une erreur se produit.
Puis-je utiliser une phing avec Laravel ou d'autres cadres PHP?
Oui, la phing peut être utilisée avec n'importe quel projet PHP, y compris le larould ou d'autres cadres. Vous pouvez définir des tâches pour gérer les opérations spécifiques au framework, comme l'exécution des migrations ou l'ensemencement de la base de données.
Comment puis-je exécuter des tâches de phing en parallèle?
Phing ne prend pas en charge les tâches d'exécution en parallèle hors de la boîte. Cependant, vous pouvez y parvenir en utilisant la tâche pour exécuter des processus de phing séparés en arrière-plan.
Puis-je utiliser un phing pour déployer mon application?
Oui, la phing peut être utilisée pour automatiser le processus de déploiement. Vous pouvez définir des tâches pour emballer l'application, la télécharger sur le serveur et effectuer toutes les tâches de configuration nécessaires.
Comment puis-je utiliser des variables en phing?
Vous pouvez définir des variables à l'aide de la balise et les utiliser plus tard dans le fichier de construction. Les variables peuvent être définies à partir d'un fichier de propriétés, à partir de la ligne de commande, ou à partir de l'environnement.
Puis-je utiliser la phing pour générer de la documentation pour mon projet?
Oui, la phing a des tâches intégrées pour générer des documents à l'aide d'outils tels que PhpDocumentor ou APIGEN. Vous pouvez configurer le processus de génération de documentation en spécifiant les répertoires source et de destination, le format de sortie et d'autres options.
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!