Jak jsem zkoušel serializovat SimpleXML

Potřeboval jsem si do cache uložit část souboru zpracovaného pomocí SimpleXML. Jeho objekty ale bohužel nejdou serializovat, takže jsem postupně vyzkoušel jiná řešení. Jako první mě napadlo uložit celý stažený soubor, to se mi ale zdálo nehospodárné, protože ze souboru se využije jen jeho malá část. Stejně tak jsem zavrhl uložit výsledek metody asXML, aby se XML nemuselo znovu a znovu parsovat. Přesto jsem ale vyzkoušel několik dalších postupů:

Screencast

Jaký jsem si z toho udělal závěr? Asi jsem moc velký perfekcionalista, protože už druhé řešení bylo funkční a já ho přesto zahodil. Ale hlavně asi někdy rychleji píšu, než přemýšlím.

Kód jsem psal v editoru SciTE, nahrávku jsem vytvořil v aplikaci Wink.

Jakub Vrána, Řešení problému, 13.10.2010, on-line

Diskuse

ikona David Grudl:

Vždyť XML je serializace, tak jak serializovat objekt jinak, než přes asXml()? A že se to musí parsovat přece nevadí, žádnou neparsovanou serializaci PHP neumí (možná memcached, ale to fakt nevím).
13.10.2010 02:43:32

ikona Jakub Vrána:

Ono to bylo ještě trošku složitější o to, že v cyklu byla podmínka – braly se jen první čtyři položky. Ale jinak máš pravdu.

Neparsovanou serializaci nabízí funkce var_export(). Resp. při použití akcelerátoru se parsuje jen jednou. Ta se SimpleXML použít také nejde.
13.10.2010 10:13:54

fos4:

Což použít json_encode ?
13.10.2010 09:46:44

HosipLan:

to je "zápis myšlenky originálním způsobem" nebo reklama na SciTE? :)
PS. umí to pěkně pracovat s poli
13.10.2010 14:58:06

ikona Jakub Vrána:

Jde o zápis myšlenky, tahle forma mi přišla pro tuto příležitost nejvhodnější.

Reklamu na SciTE dělám jaksi mimochodem u všech svých vystoupení. Ale v rámci objektivity musím říct, že mi tam chybí dvě zásadní věci:

1. Prohlížeč souborů v postranním panelu. Dodělat ho by asi bylo celkem jednoduché, ale já bych to se svými znalostmi C++ dělal tak týden a nikomu jinému se do toho nechce.

2. Napovídání uživatelských funkcí a především metod objektů.
13.10.2010 15:48:22

Lokavidu:

krasny video, diky
13.10.2010 21:10:25
avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.