Windows.  Vírusy.  Prenosné počítače.  internet.  Kancelária.  Verejné služby.  Vodiči

(PECL yaml >= 0,4,0)

yaml_parse — Analyzuje tok YAML

Popis

yaml_parse (string $vstup [, int $pos = 0 [, int &$ndocs [, pole $spätné volania = NULL ]]]) : zmiešané

Skonvertuje celý alebo časť prúdu YAML a zapíše ho do premennej.

Zoznam parametrov

Linka na analýzu ako tok YAML.

Dokument na analýzu ( -1 pre všetky dokumenty, 0 pre prvý dokument, ...).

Ak sa nájde ndocs, nahradí sa počtom dokumentov v streame YAML.

Návratové hodnoty

Vráti hodnotu zakódovanú vo vstupe v príslušnom type PHP resp FALSE v prípade chyby. Ak pos parameter rovná sa -1 , vráti sa pole obsahujúce jednu položku pre každý dokument nájdený v streame.

Príklady

Príklad #1 Príklad použitia yaml_parse()

$yaml =<<---
faktúra: 34843
dátum: "2001-01-23"
fakturovať: &id001
dané: Chris
rodina: Dumars
adresa:
riadky: |-
458 Walkman Dr.
Suita č. 292
mesto: Royal Oak
stav: MI
pošta: 48046
stránka: zxibit.esy.es
dodacia adresa: *id001
produkt:
- sku: BL394D
množstvo: 4
popis: Basketbal
cena: 450
- sku: BL4438H
množstvo: 1
popis: Super Hoop
cena: 2392
daň: 251,420000
spolu: 4443,520000
komentáre: Najlepšie je neskoro popoludní. Záložný kontakt je Nancy Billsmer @ 338-4338.
...
EOD;

$parsed = yaml_parse ($yaml);
var_dump ($parsed);
?>

Výsledkom spustenia tohto príkladu bude niečo také:

array(8) ( ["faktúra"]=> int(34843) ["dátum"]=> string(10) "2001-01-23" ["bill-to"]=> &array(3) ( [" dané"]=> reťazec(5) "Chris" ["rodina"]=> reťazec(6) "Dumars" ["adresa"]=> pole(4) ( ["riadky"]=> reťazec(34) " 458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) "MI" ["postal"]=> int(48046) ) [ "ship-to"]=> &array(3) ( ["dané"]=> string(5) "Chris" ["rodina"]=> string(6) "Dumars" ["address"]=> pole ( 4) ( ["lines"]=> string(34) "458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) " MI" ["postal"]=> int(48046) ) ) ["product"]=> array(2) ( => array(4) ( ["sku"]=> string(6) "BL394D" [ " množstvo"]=> int(4) ["popis"]=> string(10) "Basketbal" ["cena"]=> int(450) ) => pole(4) ( ["sku"]=> reťazec (7) "BL4438H" ["množstvo"]=> int(1) ["popis"]=> reťazec(10) "Super Hoop" ["cena"]=> int(2392) ) ["daň" ] => float(251,42) ["total"]=> float(4443,52) ["comments"]=> string(68) "Najlepšie je neskoro popoludní. Záložný kontakt je Nancy Billsmer @ 338-4338.")

Prišiel deň a konfiguračné súbory pretože naša aplikácia bola taká veľká, že manažéri naznačili, že konfigurácie JSON obsahujú podozrivo veľké množstvo zložených a nezložených zátvoriek a chceli by sa ich zbaviť. Jemne naznačil, že by bolo fajn pozrieť sa na YAML bližšie, pretože kolujú reči, že je veľmi ľudsky čitateľný. A nie sú tam žiadne zátvorky. A zoznamy sú krásne. Prirodzene, nedalo sa nepočúvať starších, boli sme nútení študovať problematiku, hľadať rozdiel, klady a zápory oboch formátov. Je zrejmé, že takéto porovnávania sa začínajú len preto, aby potvrdili názor manažérov, alebo ak sa aj nepotvrdia, zistia, prečo majú pravdu a prečo sa oplatí robiť zmeny :)

Som si istý, že mnohí poznajú tieto formáty, ale aj tak to dám stručný popis z Wikipedie:

JSON (JavaScript Object Notation) je formát výmeny textových údajov založený na JavaScripte a bežne používaný v tomto jazyku. Rovnako ako mnoho iných textových formátov, aj JSON je pre ľudí ľahko čitateľný. Napriek svojmu pôvodu v JavaScripte (presnejšie z podmnožiny jazyka normy ECMA-262 z roku 1999) sa formát považuje za jazykovo nezávislý a možno ho použiť s takmer akýmkoľvek programovacím jazykom. Pre mnohé jazyky existuje pripravený kód na vytváranie a spracovanie údajov vo formáte JSON.

YAML je ľudsky čitateľný formát serializácie údajov, koncepčne blízky značkovacím jazykom, ale zameraný na pohodlie vstupu a výstupu typických dátových štruktúr mnohých programovacích jazykov. Názov YAML je rekurzívny akronym pre YAML Ain't Markup Language („YAML nie je značkovací jazyk“). ”) a bol dokonca považovaný za konkurenta XML, no neskôr bol premenovaný, aby zvýraznil údaje, a nie označenie dokumentu.

Čo teda potrebujeme:

  • vytvorte rovnaký komplexný JSON a YAML
  • určiť parametre, podľa ktorých budeme porovnávať
  • Deserializujte objekty v Jave asi 30-krát
  • porovnať výsledky rýchlosti
  • porovnať čitateľnosť súboru
  • porovnajte jednoduchosť použitia s formátom

Je zrejmé, že nebudeme písať vlastné syntaktické analyzátory, takže najskôr vyberieme pre každý formát existujúci analyzátor.
Pre json použijeme gson (z google) a pre yaml použijeme snakeyaml (od neviem koho).

Ako vidíte, všetko je jednoduché, stačí vytvoriť pomerne zložitý model, ktorý bude simulovať zložitosť konfiguračných súborov, a napísať modul, ktorý bude testovať parsery yaml a json. Začnime.
Potrebujete model približne tejto zložitosti: 20 atribútov rôzne typy+ 5 kolekcií po 5-10 prvkov + 5 vnorených objektov po 5-10 prvkov a 5 kolekcií.
Túto fázu celého porovnania možno pokojne nazvať najviac nudnou a nezaujímavou. Triedy boli vytvorené s tichými názvami ako Model, Emdedded1 atď. Nenaháňame však čitateľnosť kódu (aspoň v tejto časti), takže to necháme tak.

súbor.json

"embedded2": ( "strel1": "el1", "strel2": "el2", "strel4": "el4", "strel5": "el5", "strel6": "el6", "strel7": " el7", "intel1": 1, "intel2": 2, "intel3": 3, "zoznam1": [ 1, 2, 3, 4, 5 ], "zoznam2": [ 1, 2, 3, 4, 5, 6, 7 ], "zoznam3": [ "1", "2", "3", "4" ], "zoznam4": [ "1", "2", "3", "4", "5", "6" ], "map1": ( "3": 3, "2": 2, "1": 1), "mapa2": ( "1": "1", "2": "2", "3": "3"))


súbor.yml

vložené2: intel1: 1 intel2: 2 intel3: 3 zoznam1: - 1 - 2 - 3 - 4 - 5 zoznam2: - 1 - 2 - 3 - 4 - 5 - 6 - 7 zoznam3: - "1" - "2" - "3" - "4" zoznam4: - "1" - "2" - "3" - "4" - "5" - "6" mapa1: "3": 3 "2": 2 "1": 1 map2: 1: "1" 2: "2" 3: "3" strel1: el1 strel2: el2 strel4: el4 strel5: el5 strel6: el6 strel7: el7


Súhlasím, že ľudská čitateľnosť je dosť subjektívny parameter. Ale predsa len je podľa mňa yaml o niečo príjemnejší na pohľad a intuitívnejší.

yaml analyzátor

public class BookYAMLParser implementuje Parser ( String filename; public BookYAMLParser(String filename) ( this.filename = filename; ) @Override public void serialize(Book book) ( try ( DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); Yaml yaml = new Yaml(možnosti) yaml.dump(kniha, spisovateľ.close(); (e.printStackTrace();) @Prepísať verejnú knihu (); try ( InputStream input = new FileInputStream(new File(filename)); Yaml yaml = new Yaml(); Book data = (Book) yaml.load(input); input.close(); return data; ) catch (FileNotFoundException e ) ( e.printStackTrace(); ) catch (YamlException e) ( e.printStackTrace(); ) catch (IOException e) ( e.printStackTrace(); ) catch (Exception e) (String message = "Výnimka v súbore " + názov súboru + ", "; throw new Exception(sprava + e.getMessage() ) return null;

analyzátor json

public class BookJSONParser implementuje Parser ( String filename; public BookJSONParser(String filename) ( this.filename = filename; ) @Override public void serialize(Book book) (Gson gson = new GsonBuilder().setPrettyPrinting().create();; skúste (FileWriter Writer = new FileWriter(filename String json = gson.toJson(bookwrite.close() catch (IOException e) ( e.printStackTrace(); ) @Override public Book deserialize( ) (Gson gson = new Gson()); skúste ( BufferedReader br = new BufferedReader(new FileReader(názov súboru)); JsonReader jsonReader = new JsonReader(br); Book book = gson.fromJson(jsonReader, Book.class); return book ; ) catch (IOException e) ( e .printStackTrace( ) return null ) )

Ako vidíme, oba formáty sú podporované v jazyku Java. Ale pre json je výber oveľa širší, to je nepopierateľné.
Parsery sú pripravené, teraz sa pozrime na implementáciu porovnania. Aj tu je všetko mimoriadne jednoduché a zrejmé. Existuje jednoduchá metóda, ktorá deserializuje objekty zo súboru 30-krát. Ak by mal niekto záujem, kód je pod spojlerom.

testovací kód

public static void main(String args) ( String jsonFilename = "file.json"; String yamlFilename = "file.yml"; BookJSONParser jsonParser = new BookJSONParser(jsonFilename); jsonParser.serialize(new Book(new Author("name",") "123-123-123"), 123, "dfsas")); , "dfsas")); //deserializácia json StopWatch stopWatch = new StopWatch.start();< LOOPS; i++) { Book e = jsonParser.deserialize(); } stopWatch.stop(); System.out.println("json worked: " + stopWatch.getTime()); stopWatch.reset(); //yaml deserialization stopWatch.start(); for (int i = 0; i < LOOPS; i++) { Book e; e = yamlParser.deserialize(); } stopWatch.stop(); System.out.println("yaml worked: " + stopWatch.getTime()); }

V dôsledku toho dostaneme nasledujúci výsledok:
json pracoval: 278 yaml pracoval: 669

Ako vidíte, súbory json sa analyzujú približne trikrát rýchlejšie. Ale absolútny rozdiel nie je v našom meradle kritický. Preto to nie je silné plus v prospech json.
Stáva sa to preto, že json sa analyzuje za chodu, to znamená, že sa číta znak po znaku a okamžite sa uloží do objektu. Ukazuje sa, že objekt je vytvorený v jednom prechode cez súbor. V skutočnosti neviem, ako presne tento parser funguje, ale všeobecná schéma takto.
A yaml je zasa odmeranejší. Fáza spracovania údajov je rozdelená do 3 etáp. Najprv sa vytvorí strom objektov. Potom sa to nejakým spôsobom transformuje. A až po tejto fáze sa prevedie na potrebné dátové štruktúry.

Malý porovnávacia tabuľka("+" - výhoda, "-" - oneskorenie, "+-" - žiadna zjavná výhoda):

Ako sa to dá zhrnúť?
Všetko je tu zrejmé, ak je pre vás dôležitá rýchlosť - potom json, ak ľudská čitateľnosť - yaml. Musíte sa len rozhodnúť, čo je dôležitejšie. Pre nás to bolo druhé.
V skutočnosti možno v prospech každého z formátov uviesť oveľa viac rôznych argumentov, ale verím, že tieto dva body sú stále najdôležitejšie.

Ďalej, pri práci s yaml som sa musel vysporiadať s nie veľmi pekným spracovaním výnimiek, najmä keď syntaktické chyby. Tiež som musel testovať rôzne knižnice yaml. Nakoniec bolo potrebné napísať nejaké potvrdenie. Vyskúšali sme overenie pomocou schém (kde sme museli volať drahokamy Ruby) a overenie fazule založené na jsr-303. Ak vás niektorá z týchto tém zaujala, rád odpoviem na vaše otázky.
Ďakujem za pozornosť :)

P.S.
Na konci písania článku som narazil na nasledujúce porovnanie yaml a json.

1. V zozname produktov kliknite na "Nahrať"

Po nahratí produktov do syntaktického analyzátora na stránke so zoznamom produktov kliknite na tlačidlo „Nahrať“.

2. Nastavte nastavenia formátu

V zobrazenom okne vyberte formát "Yandex.Market (YML)" a nastavte nastavenia formátu: ako nahrať charakteristiky a samostatné vlastnosti.

Podrobný popis každého nastavenia nájdete nižšie na tejto stránke.

3. Nahrávanie začalo

Zobrazí sa indikátor vykládky tovaru. Ak nechcete čakať, môžete vypnúť počítač alebo zavrieť prehliadač – sťahovanie bude pokračovať bez ohľadu na vás.

čo je YML?

YML (Yandex Market Language) je štandard vyvinutý spoločnosťou Yandex na prijímanie a umiestňovanie informácií do databázy Yandex.Market. YML je založený na štandarde XML.

Nastavenia formátu:

Generovať ID ponuky z— umožňuje vybrať spôsob vytvorenia atribútu id tagu ponuky, ktorý určuje ID ponuky produktu.

Samostatné multi-vlastnosti— umožňuje zvoliť spôsob rozdelenia vybraných vlastností (veľkosti, farby atď.): buď na základe opakujúceho sa tagu param, alebo na základe rozdelenia ponuky na jednotlivé produkty podľa group_id, podľa špecifikácie YML.

Produkty sú vypredané— môžete nastaviť, ako sa budú produkty “Vypredané” zobrazovať na trhu: Na objednávku, t.j. s možnosťou objednať alebo úplne vypredané.

Všeobecné nastavenia:

Vyložiť tovar— umožňuje vám vybrať, ktoré produkty sa majú vyložiť na základe „Dostupnosti“ na webovej stránke dodávateľa.

Postup pri vykládke tovaru— umožňuje zvoliť poradie vykládky tovaru a v prípade potreby nastaviť vykládku dozadu.

Povoliť značenie HTML v poliach produktov— povolí alebo zakáže značenie HTML v produktových poliach. Veľmi zriedka používané internetovými obchodmi.

Nahrávanie obrázkov— umožňuje zmeniť počet alebo spôsob nahrávania obrázkov.

Vlastnosti nahrávania— umožňuje nahrať vlastnosti produktu (farby, veľkosti atď.) ako samostatné polia v súbore alebo ich jednoducho pridať všeobecný popis tovar. Po pridaní do popisu zostanú samotné stĺpce. Vyberá sa v závislosti od možností vášho internetového obchodu alebo webovej stránky spoločného podniku.

Rozdeliť do viacerých súborov— umožňuje rozdeliť nahrávanie do niekoľkých súborov: podľa kategórie alebo značky.

Našli ste chybu pri nahrávaní do tohto formátu?

Ak nájdete chybu vo formáte nahrávania Yandex.Market (YML), oznámte nám to na alebo prostredníctvom chatu na webovej stránke. Nahrávanie sa pokúsime opraviť čo najskôr.

Doplnok vám umožňuje importovať produkty z iných obchodov cez XML feed Yandex, ktorý používajú obchody na obchodovanie na Yandex.Market.
Produkty sa importujú do štruktúry pluginu WP Shop. Nechýba automatická synchronizácia produktov so zdrojom, ktorú je možné spustiť buď manuálne alebo cez cron.
Nevyhnutný nástroj pre:
1. Prenos obchodu z akýchkoľvek iných motorov do WordPress WP-Shop
2. Budovanie affiliate obchodov na zarábanie peňazí na affiliate províziách pomocou modelu CPS

Aplikácia vyžaduje na fungovanie IonCube Loader!

Ľubovoľný oddiel 1

Často kladené otázky

Návod na inštaláciu
  1. Nahrajte doplnok „WP Shop YML Parser“ do adresára /wp-content/plugins/
  2. Aktivujte doplnok „WP Shop YML Parser“ prostredníctvom ponuky „Pluginy“ vo WordPress
  3. Pozrite si celú používateľskú príručku, ako nastaviť váš „WP Shop YML Parser“
Otázka, ktorú môže mať niekto

Pomoc nájdete na stránke wp-shop.ru.

Recenzie

Za žiadnych okolností týchto vývojárov nekontaktujte ani od nich nič nekupujte. Funkčnosť, ktorú sľubujú v profesionálnej verzii, je lož. Jednoducho vám vezmú peniaze a potom odmietnu všetko vrátane podpory. Stačí si pozrieť ich pokrivený web a položivotnú dokumentáciu a všetko pochopíte sami!

Zmeniť denník

Verzia: 0.9
-projekt_ako_pole
-id_as_field

Verzia: 0.8
-template_price (vlastná cenovka)

Verzia: 0.7
-fields_update — nové nastavenie na aktualizáciu vlastných polí v projektoch

Verzia: 0.6
-Ukážkový xml analyzátor nahradený analyzátorom SAX, ktorý je lepší pre správu pamäte

Verzia: 0.5
-vylepšenia

Verzia: 0.4
- hromadná analýza
- klonovať projekt podľa kategórie

Verzia: 0.3
-odkaz na dokumenty

Verzia: 0.2
- povoliť miestne kanály
- zdroj ako súbor povoliť
- možnosti pridania yml

Verzia: 0.1
- prvé uvoľnenie

Testovanie prístroja, konfiguračné súbory a protokolové súbory by mali byť čitateľné človekom. YAML (YAML Not Markup Language) má menej podrobných údajov ako formát serializácie XML a medzi vývojármi sa stal obľúbeným formátom. softvér hlavne preto, že je to pre človeka jednoduchšie. Súbory YAML sú jednoduché textové súbory, obsahujúci údaje zapísané v súlade s pravidlom syntaxe YAML a spravidla má príponu súboru .yml. V tomto článku sa naučíte základy YAML a ako môžete integrovať PHP YAML parser do vašich projektov.

Použite YAML pre projekty PHP

Pochopenie syntaxe YAML

YAML podporuje pokročilé funkcie, ako sú referencie a vlastné dátové typy, ale ako vývojára PHP vás väčšinou bude zaujímať, ako YAML predstavuje enumerované polia (sekvencie v terminológii YAML) a asociatívne polia (mapovania).

Tu je návod, ako je enum reprezentovaný v poli YAML:

- "William O'Neal" - nepravda

Každý prvok poľa je uvedený za pomlčkou a medzerou. Jeho syntax na reprezentáciu hodnôt je podobná ako v PHP (citovanie reťazcov atď.)

Vyššie uvedené je ekvivalentné nasledujúcemu PHP:

Typicky sa každý prvok v YAML zobrazuje na samostatnom riadku, ale uvedené polia môžu byť vyjadrené na jednom riadku pomocou zátvoriek:

[ 2, "William O'Neal", nepravda ]

Nasledujúci kód ukazuje, ako je asociatívne pole reprezentované v YAML:

Id: 2 name: "William O'Neal" isActive: false

Prvý kľúč prvku určuje dvojbodku a jednu alebo viac medzier a potom je špecifikovaná hodnota. Stačí mať za dvojbodkou len jednu medzeru, ale ak chcete, môžete použiť viac miesta pre lepšiu čitateľnosť.

Ekvivalentné pole PHP vyššie uvedeného YAML je:

2, "name" => "William O"Neal", "isActive" => false);?>

A podobne ako uvedené polia, môžete vyjadriť asociatívne polia na jednom riadku pomocou kučeravé zátvorky:

( id: 2, meno: "William O'Neal", isActive: false )

S jedným alebo viacerými medzerami na odsadenie môžete reprezentovať viacrozmerné pole takto:

Nad blokom YAML je to ekvivalentné nasledujúcemu PHP:

array(0 => array("id" => 1, "name" => "Brad Taylor", "isActive" => true), 1 => array("id" => 2, "name" => " William O"Neill", "isActive" => nepravda)));?>

YAML vám tiež umožňuje reprezentovať kolekciu dátových prvkov v jednom dokumente bez potreby koreňového uzla. Nasledujúci príklad obsahuje obsah article.yml, ktorý zobrazuje viacero viacrozmerných polí v jednom súbore.

Autor: 0: ( id: 1, meno: "Brad Taylor", isActive: true ) 1: ( id: 2, name: "William O"Neal", isActive: false ) kategória: 0: ( id: 1, name : "PHP" ) 1: ( id: 2, názov: "YAML" ) 2: ( id: 3, názov: "XML" ) článok: 0: id: 1 nadpis: "Ako používať YAML v projekte PHP" obsah: > YAML je menej podrobný formát serializácie údajov Za ním je „YAML nie je značkovací jazyk“. : 0 : ( ID článku: 1, ID kategórie: 1 ) 1: ( ID článku: 1, ID kategórie: 2 )

Zatiaľ čo väčšina syntaxí YAML je intuitívna a ľahko zapamätateľná, je potrebné venovať pozornosť jednému dôležitému pravidlu. Zarovnanie sa musí vykonať s jednou alebo viacerými medzerami; Tabule nie sú povolené. IDE môžete nakonfigurovať tak, aby pri stlačení klávesu tabulátora vložilo medzery namiesto tabulátorov, čo je bežná konfigurácia medzi vývojármi softvéru, aby sa zabezpečilo, že kód bude správne odsadený a zobrazí sa pri prezeraní v iných editoroch.

Viac pokročilých funkcií a syntaxe a toho, čo YAML podporuje, sa môžete dozvedieť v oficiálnych dokumentoch, Symfony alebo Wiki.

YAML by nemal byť alternatívou k XML

Ak skúmate YAML so svojím milovaným vyhľadávač, ste nepochybne na tému "YAML vs XML", a prirodzene, keď prvýkrát uvidíte YAML, budete ho vo všeobecnosti uprednostňovať pred XML, pretože sa ľahšie číta a píše. YAML by však mal byť stále jedným z nástrojov pre vývojárov arzenálu a nemal by byť alternatívou k XML. Tu sú niektoré výhody YAML a XML.

Výhody YAML

  • Menej podrobné, ľahšie zostaviteľné a čitateľnejšie
  • Nemá stromovú štruktúru s jedným nadradeným uzlom

Výhody XML

  • Viac vstavanej podpory pre PHP v porovnaní s YAML
  • XML sa stalo de facto štandardom pre komunikáciu medzi komunikačnými aplikáciami
  • XML tagy môžu mať atribúty poskytujúce podrobnejšie informácie o súkromných údajoch

Hoci je XML podrobný, je čitateľnejší a udržiavateľnejší, keď je hierarchia prvkov hlboká v porovnaní s priestorovou reprezentáciou hierarchie YAML.

Vzhľadom na výhody v oboch jazykoch sa YAML javí ako vhodnejší na zber rôznych dátových množín a keď sú ľudia aj jedným z konzumentov dát.

Vyberte položku Parser PHP YAML

Analyzátor YAML má dva funkčnosť, druh záťaže pre funkciu, ktorá konvertuje YAML na pole, a funkciu výpisu, ktorá konvertuje pole na YAML.

V súčasnosti ide o PHP YAML parser, ktorý je dostupný ako rozšírenie PECL a nie je súčasťou PHP. Okrem toho existujú analyzátory napísané v čistom PHP, ktoré by bolo v porovnaní s rozšírením PECL o niečo pomalšie.

Nižšie sú uvedené niektoré analyzátory YAML pre PHP:

  • Neprichádza s PHP
  • Na inštaláciu je potrebný root prístup k serveru
  • Implementované v PHP
  • Bude fungovať v PHP 5.2.4+
  • Potrebujete extrahovať frameworky zo Symfony
  • Implementované v PHP
  • Bude fungovať v PHP 5.3.2+
  • Implementované v PHP
  • Bude fungovať v PHP 5+

Dávam prednosť výberu komponentov YAML Symfony 1.4 kvôli prenosnosti (funguje s PHP 5.2.4+) a využiteľnosti (nainštalované Symfony 1.4 a PHP framework). Po rozbalení archívu YAML komponentov Symfony sú triedy YAML dostupné pod lib/yaml. Statické metódy load() a dump() sú dostupné z triedy sfYaml.

Integrácia do projektu Parser PHP YAML

Kedykoľvek potrebujete integrovať triedu alebo knižnicu tretej strany do svojho projektu PHP, je dobrým zvykom vytvoriť obal a testy. Zmena knižnice tretej strany s minimálnymi zmenami v kóde projektu (na kód projektu by sa mal vzťahovať iba shell) a s istotou, že zmeny nespomalia žiadnu funkcionalitu (testy).

Nižšie je uvedený test (YamlParserTest.php), ktorý bol vytvorený pre triedu obalu (YamlParser.php). Vyžaduje sa na spustenie a udržiavanie testu. Ak chcete, môžete pridať viacero testov pre neplatné názvy súborov a prípony súborov iné ako .yml a ďalšie testy založené na skriptoch, s ktorými sa stretnete vo svojom projekte.

yamlParser = new YamlParser();"; $content = "YAML is a less-verbose data serialization format. " . "It stands for \"YAML Ain"t Markup Language\". " . "YAML has been a popular data serialization format among " . "software developers mainly because it"s human-readable.\n"; $expectedArticle = array("id" => 1, "title" => $title, "content" => $content, "author" => 1, "status" => 2); $this->assertEquals($expectedArticle, $actualArticle); } /** * @expectedException YamlParserException */ public function testExceptionForWrongSyntax() { $this->yamlParser->load("wrong-syntax.yml"); } }?> !}

) verejná funkcia testMainArrayKeys() ( $parsedYaml = $this->yamlParser->load("článok.yml"); $mainArrayKeys = array_keys($parsedYaml); $expectedKeys = array("autor", "kategória", "článok" ", "articleCategory"); $this->assertEquals($expectedKeys, $mainArrayKeys); ) verejná funkcia testSecondLevelElement() ( $parsedYaml = $this->yamlParser->load("article.yml"); $actualArticle = $ parsedYaml["článok"]; $title = "Ako používať YAML vo svojom ďalšom projekte PHP

A tu je trieda obalu:< 0) { parent::__construct($message, $code); } else { parent::__construct($message, $code, $previous); } } }?>

P.S.

getMessage(), $e->getCode(), $e); ) ) výpis verejnej funkcie ($array) ( try ( return sfYaml::dump($array); ) catch (Exception $e) ( throw new YamlParserException($e->getMessage(), $e->getCode(), $e ) ) ) class YamlParserException rozširuje výnimku ( verejná funkcia __construct($správa = "", $kód = 0, $previous = NULL) ( if (version_compare(PHP_VERSION, "5.3.0")); Takže teraz máte vedomosti o tom, čo je YAML a ako ho reprezentovať



Ak si všimnete chybu, vyberte časť textu a stlačte Ctrl+Enter
ZDIEĽAŤ: