YAML: format de sérialisation des données pour améliorer l'efficacité des projets PHP
Le périphérique de test, le fichier de configuration et le fichier journal doivent tous prendre en compte la lisibilité humaine et machine. YAML (Yaml Ain't Bualip Language) est un format de sérialisation de données plus simple que XML, et est populaire parmi les développeurs de logiciels pour sa lisibilité. Les fichiers YAML contiennent simplement des fichiers de données texte écrits selon les règles de syntaxe YAML, généralement avec l'extension .yml. Cet article présentera les bases de YAML et comment intégrer l'analyseur PHP YAML dans votre projet PHP.
Points clés:
Explication détaillée de la grammaire yaml
YAML prend en charge des fonctionnalités avancées telles que les références et les types de données personnalisées, mais en tant que développeur PHP, vous allez prêter attention à la façon dont YAML représente les tableaux énumérés (séquences en termes YAML) et les tableaux associatifs (mappages). Ce qui suit est la représentation des tableaux énumérés dans YAML:
- 2 - "William O'Neil" - false
Chaque élément du tableau apparaît après trait d'union et espaces. La syntaxe pour représenter les valeurs est similaire à PHP (chaînes de référence, etc.). Le contenu ci-dessus est équivalent au PHP suivant:
<?php array(2, "William O'Neil", false);
Habituellement, chaque élément apparaît dans une ligne séparée dans YAML, mais le réseau d'énumération peut également être représenté dans une ligne à l'aide de crochets:
[ 2, "William O'Neil", false ]
Le code suivant montre comment représenter un tableau associatif dans YAML:
id: 2 name: "William O'Neil" isActive: false
Déclarez d'abord la clé de l'élément, suivi d'un côlon et d'un ou plusieurs espaces, puis déclarez la valeur. Il suffit d'avoir un seul espace après le côlon, mais pour une plus grande lisibilité, vous pouvez utiliser plus d'espaces. Le tableau PHP équivalent de YAML ci-dessus est:
<?php array("id" => 2, "name" => "William O'Neil", "isActive" => false);
Similaire aux tableaux énumérés, vous pouvez utiliser des accolades pour représenter des tableaux associatifs dans une ligne:
{ id: 2, name: "William O'Neil”, isActive: false }
Utilisez un ou plusieurs espaces pour l'indentation, vous pouvez représenter un tableau multidimensionnel comme ceci:
- 2 - "William O'Neil" - false
Notez que bien que le deuxième tableau de couche soit un tableau énuméré, j'ai utilisé la syntaxe de la carte (colon) au lieu de la séquence (trait d'union) pour plus de clarté. Le bloc YAML ci-dessus est équivalent au PHP suivant:
<?php array(2, "William O'Neil", false);
YAML permet également de représenter une collection de plusieurs éléments de données dans le même document sans avoir besoin d'un nœud racine. L'exemple suivant est le contenu de l'article.yml, qui montre plusieurs tableaux multidimensionnels dans le même fichier.
[ 2, "William O'Neil", false ]
Bien que la majeure partie de la syntaxe de YAML soit intuitive et facile à retenir, il existe une règle importante qui nécessite une attention. L'indentation doit utiliser un ou plusieurs espaces; Vous pouvez configurer l'IDE pour insérer des espaces au lieu des onglets lorsque la touche de tabulation est appuyée, une configuration courante pour les développeurs de logiciels afin de s'assurer que le code est en retrait correctement et affiché lorsqu'il est affiché dans d'autres éditeurs. Vous pouvez apprendre des fonctionnalités et une syntaxe plus complexes prises en charge par YAML en lisant la documentation officielle, les références Symfony ou Wikipedia.
(Le contenu suivant est similaire au texte d'origine, mais les ajustements de phrases et les remplacements de mots ont été faits pour maintenir la signification originale inchangée)
yaml ne remplace pas le xml
Si vous recherchez YAML à l'aide de moteurs de recherche, vous trouverez sans aucun doute des discussions sur "YAML vs XML" et naturellement, lorsque vous expérimentez YAML pour la première fois, vous aurez tendance à l'aimer davantage parce qu'il est plus facile de lire et d'écrire. Cependant, YAML devrait être un autre outil dans votre boîte à outils de développeur et n'est pas nécessairement un remplacement de XML. Voici quelques-uns des avantages de YAML et XML.
Avantages de YAML:
Avantages de XML:
Bien que le XML soit verbeux, XML est plus facile à lire et à maintenir lorsque la hiérarchie des éléments est profonde que la représentation hiérarchique orientée vers l'espace de YAML. Compte tenu des avantages des deux langues, YAML semble être plus approprié pour les collections de différents ensembles de données, et lorsque les humains sont également des utilisateurs de données.
Sélectionnez PHP YAML Parser
L'analyseur YAML doit avoir deux fonctions: une sorte de fonction de chargement qui convertit YAML en un tableau; et une fonction de vidage qui convertit le tableau en YAML. Actuellement, l'analyseur YAML de PHP peut être utilisé comme extension PECL et n'est pas regroupé avec PHP. Alternativement, il existe des analyseurs écrits en PHP pur qui sont légèrement plus lents que les extensions PECL. Voici quelques analyseurs YAML qui peuvent être utilisés pour PHP:
Extension PECL - Non regroupé avec PHP
L'autorisation racine du serveur doit être installée
Composant YAML Symfony 1.4 - implémenté avec PHP
peut être utilisé dans PHP version 5.2.4
Besoin d'être extrait du cadre Symfony
Composant YAML Symfony 2 - implémenté avec PHP
peut être utilisé dans PHP version 5.3.2
spyc - implémenté avec php
peut être utilisé dans la version PHP 5
Je préfère le composant YAML Symfony 1.4 car il est portable (il fonctionne avec la version PHP 5.2.4) et la maturité (Symfony 1.4 est un cadre PHP complet). Après avoir extrait le composant YAML de l'archive Symfony, la classe YAML est située sous LiB / YAML. Les méthodes statiques Load () et Dump () peuvent être utilisées dans la classe SFYAML.
(Le contenu suivant est similaire au texte d'origine, mais les ajustements de phrases et les remplacements de mots ont été faits pour maintenir la signification originale inchangée)
Intégrer l'analyseur PHP YAML dans votre projet
Chaque fois que vous intégrez une classe ou une bibliothèque tierce dans un projet PHP, il est préférable de créer un wrapper et une suite de tests. Cela vous permet de modifier la bibliothèque tierce ultérieurement avec un minimum de modifications du code de projet (le code du projet ne doit référencer l'emballage) et garantit que les modifications ne rompent aucune fonctionnalité (la suite de tests vous dira). Vous trouverez ci-dessous un cas de test (yamlparssertest.php) créé pour ma classe de wrapper (yamlparser.php). Vous devez comprendre le phpunit pour exécuter et maintenir des cas de test. Si vous préférez, vous pouvez ajouter plus de tests, tels que des noms de fichiers mauvais et des extensions de fichiers autres que .yml, ainsi que d'autres tests en fonction des scénarios que vous rencontrez dans votre projet.
(La partie de code du texte d'origine est omise ici, car la réécriture de la pièce de code nécessite une grande quantité d'espace, et le code réécrit a la même fonction que le texte d'origine, il est donc omis ici )
Résumé
Maintenant, vous avez appris ce qu'est YAML, comment représenter les tableaux PHP dans YAML et comment intégrer PHP YAML Parser dans votre projet. En passant plus de temps à apprendre la syntaxe YAML, vous pourrez maîtriser la puissance qu'il fournit. Vous pouvez également envisager d'explorer les cadres Symfony 1.4 et 2 qui utilisent beaucoup YAML.
(La partie FAQ du texte d'origine est omise ici, car la partie FAQ a beaucoup de contenu et le contenu réécrit a la même fonction que le texte d'origine, il est donc omis ici)
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!