Parser PHP YAML [chiuso]


105

Qualcuno conosce un buon Parser YAML per PHP? In caso affermativo, quali sono i pro e i contro di questa libreria?


prova "spyc" lib spyc.sourceforge.net
Shreef

16
+1 sebbene non costruttiva, questa pagina mi è stata estremamente utile
Erick Robertson

2
considerando la qualità della risposta più votata a questa domanda, è sorprendente che questa domanda sia stata chiusa come "non costruttiva".
dreftymac

Ho appena rilasciato il mio parser di BabyYaml, che è un cugino più semplice di Yaml, se sei interessato dai un'occhiata qui: github.com/lingtalfi/BabyYaml
Ling

Devo essere d'accordo con ErickRobertson e dreftymac che questo ha letteralmente risposto bene alla mia domanda e chiuderla ha impedito ulteriori possibili buone risposte.
Pharaoh Tools

Risposte:


139

Ultimo aggiornamento : 26 luglio 2017

Ecco un riepilogo dello stato di YAML in PHP:

  • Wrapper per le librerie C: probabilmente li vorrai se hai bisogno di velocità assoluta:
  • Implementazioni PHP pure:

    • sfYaml : componente YAML di Symfony. Puoi vedere le motivazioni dei suoi autori qui . Voleva qualcosa che fosse " facile da usare, veloce, testato e che avesse messaggi di errore chiari ".
    • spyc : parser YAML senza dipendenze

Al momento della stesura di questo articolo, le date di rilascio delle ultime versioni per le suddette librerie e le versioni della specifica YAML (1.2 è l'ultima versione) supportate sono:

php-yaml   1.3.0     2016-09-24     YAML 1.1  [PHP 5]
php-yaml   2.0.0     2016-09-24     YAML 1.1  [PHP 7]
syck       0.9.3     2008-11-18     YAML 1.0
sfYaml     3.3.5     2017-06-15     YAML 1.1, most of 1.2
spyc       0.6.2     2017-02-24     YAML 1.1 

1
Ci sono altre librerie meno conosciute (come questa , dal progetto Horde), ma non volevo approfondire molto queste.
NullUserException

3
Uso sfYaml da circa due anni e durante un test delle prestazioni mi sono reso conto che sfYaml :: parse () ha impiegato la maggior parte del tempo di elaborazione. L'ho sostituito con php-yaml e ora l'applicazione è più veloce del 70%! Questa è un'enorme differenza.
Attila Fulop

1
Aggiornamento 2019 per PHP: "spyc" ha tanti problemi, mentre "sfYaml" funziona bene.
ViliusL

49

Spyc: https://github.com/mustangostang/spyc

Implementazione PHP pura, quindi non è necessario apportare modifiche al server per l'installazione. Se la velocità è motivo di grave preoccupazione, potrebbe non essere la soluzione ideale, ma se utilizzi YAML per le configurazioni o per un volume relativamente basso, è una soluzione fantastica.

Dato un documento YAML, Spyc restituirà un array che puoi usare come meglio credi.

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

Dato un array, Spyc restituirà una stringa che contiene un documento YAML costruito dai tuoi dati.

$yaml_str = Spyc::YAMLDump($myarray);

1
+1 Volevo solo un modo semplice e veloce per utilizzare YAML in uno script di importazione. La mia applicazione non necessita di alcun supporto oltre alle importazioni (e probabilmente un giorno alle esportazioni). Ho scoperto che spyc, elencato come "ancora un altro parser YAML", era una soluzione con un clic. Ho rilasciato l'unico script nella mia cartella degli script, l'ho incluso e ho chiamato un metodo. Non è più facile di così, e ora torno al lavoro: il blocco stradale è stato rimosso.
Erick Robertson

1
Non aggiornati e molti file yaml vengono analizzati in modo errato (alcuni dati vengono persi).
ViliusL



3

Se stai usando molto YAML nel tuo progetto potresti scoprire che le librerie PHP pure come spyc o Symfony YAML non sono abbastanza veloci. Esistono almeno due collegamenti PHP per i parser C YAML:

  • yaml - un wrapper per la libreria parser LibYAML YAML 1.1
  • syck - un wrapper per la libreria parser Syck YAML 1.0


2

Prova sfYaml , è il migliore che conosco.

Symfony e Doctrine ORM stanno usando questo.

Per ottenerlo, puoi scaricare Doctrine 1.2 ed estrarlo sfYamldalla vendordirectory.

Fateci sapere se si adatta alle vostre esigenze.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.