ugrás a tartalomhoz

Objektum típus szerializálás után már nem ugyanaz?

janoszen · 2007. Szep. 12. (Sze), 14.53
Sziasztok,

a következő furcsaságra bukkantan. Betöltök egy DOMDocument-et majd egy DOMXPath-t. Ha a DOMXPath-t szerializálom és töltöm vissza, azt mondja hogy invalid ... context. Ha a DOMDocumentet szeralizálom, ezt a hibát kapom:

DOMXPath::__construct() expects parameter 1 to be DOMDocument, object given


A PHP 5 nem tartja meg az objektumok típusát szerializáson keresztül?

J
 
1

Próbakód

janoszen · 2007. Szep. 12. (Sze), 14.58
Itt van a lecsupaszított kód:

$configfile = dirname(__FILE__) . "/config.xml"
$configcache = dirname(__FILE__) . "/config.ser";

if (file_exists($configcache) && file_exists($configFile) && (filemtime($configFile) < filemtime($configcache))) {
	$doc = unserialize(file_get_contents($configcache));
	$xpath = new DOMXPath(self::$doc);
} else {
	$doc = new DOMDocument();
	$doc->load($configFile);
	
	$xpath = new DOMXPath(self::$doc);
		
	file_put_contents($configcache, serialize(self::$xpath));
}
2

Annal rosszabb a helyzet...

burci · 2007. Szep. 12. (Sze), 16.15
En tudasom szerint semmilyen dom kozeli dolgot nem tud a php5 serializalni.


$dom = new DomDocument();
$dom->loadXML("<root><test>1</test></root>");

echo serialize( $dom ), "\n";
// eredmenye: O:11:"DOMDocument":0:{}

echo $dom->saveXML();
// eredmenye: <?xml version="1.0"?><root><test>1</test></root>

Ugyanez tortenik xpath-al is.
3

Király :S

janoszen · 2007. Szep. 12. (Sze), 18.18
Köszi az infót, ez nagyon gáz mert gyakorlatilag nem lehet cache-t építeni rá, max ha saját XML parzert építek.
4

RTFM ;)

Hodicska Gergely · 2007. Szep. 13. (Cs), 08.05
Note: It is not possible to serialize PHP built-in objects.



Üdv,
Felhő
5

:S

janoszen · 2007. Szep. 13. (Cs), 09.26
Na igen, pont ez a problémám. Kellene cache-elnem azt a nyamvadt XML fájlt valahogy.
6

mentsd el azt

Hojtsy Gábor · 2007. Szep. 13. (Cs), 09.48
Mentsd el az XML-t.
7

Adatszerkezet szerializalas

zmb · 2007. Szep. 13. (Cs), 10.13
Hat, en aztat szoktam, h XML-bol felhuzom azt az adatszerkezetet, amit hasznalni akarok, majd ezt az adatszerkezetet szerializalom le, es rantom be ujra. Igy csak akkor kell az XML-t ujra bejarni, ha annak a tartalma megvaltozott.
8

XPath

janoszen · 2007. Szep. 13. (Cs), 10.46
Igen, ez jó is lenne, ha nem akarnék XPath-t használni. Szvsz nem a file olvasása a sok, hanem az XML parzolása és az XPath... nem tudom, egyelőre marad így.
9

konkrét adat cachelése?

Hodicska Gergely · 2007. Szep. 13. (Cs), 21.13
Konkrét esetet persze nem ismerem, de gondolom végülis valamilyen adatot akarsz kinyerni az XML-ből, bármikor chachelheted ezt az adatot, ha ténylegesen úgy tűnik, hogy a rendszeredben ez a szűk kersztmetszet.


Üdv,
Felhő
10

Kis optimalizálás

janoszen · 2007. Szep. 13. (Cs), 22.33
Nem olyan nagyon vészes, mert ez egy kis optimalizálás lett volna a nagy rendszerben... lényeg, hogy a konfigurációs adatok egy XML fájlban tárolódnak és abból kéri le az illetékes osztály magának, amire szüksége van. Az adatok sokszínűségének köszönhetően és a programozás egyszerűsége érdekében XPath kifejezésekkel lehet ezt megtenni... ami CPU-t eszik. Nem sok, de szerettem volna kicsit tekerni rajta.