Profile cover photo
Profile photo
Máté Gyürüs
138 followers
138 followers
About
Máté's posts

Post has attachment
No elkészült az uj Android appja az Oszkárnak. Kipróbálni szabad!

No, mai felfedezésem, a PHP bugyraiból:

Van ugye a kivételkezelés, ami egy pompás találmány. Valahol mélyen a 32. 3rd party lib 298. classában dob egy exceptiont. Történetesen el szeretnéd kapni: ez nem egy egyedi igény. Sokan csináltak már ilyet.

No de mi van akkor ha nem az a célod a kivétel elkapásával, hogy te ird ki a felhasználónak, hogy bocsi, hanem mondjuk az a célod, hogy egy fallback class-al ujrapróbáld az egészet. - Velem megesett ma ez is.

Hogy konkretizáljuk a példát: valami bonyolult 3rd party cache kezelő libed van, ami képes hibát dobni.

De mellette cacheletlenül db ből is ki tudod nyalni az adatot, ha akarod - és inkább ezt tennéd, mint hibát adsz a user arcába a cache hibája miatt pl.

PHP ban a kód kb így nézne ki:

try {
  $myclass = new CacheClass();
  $result = $myclass ->getValue();
} catch (\Exception $e) {
  $myclass = new DataClass();
  $result = $myclass ->getValue(); 
}

Ha működne. de sajnos nem.
Valami megmagyarázhatatlan okból kifolyólag, hiába kapom el az Exceptiont, a hiba valahol a $myclass változóban példányosított manifesztumban lépett fel, így a $myclass változót el kell felejteni mint a leprás rokont. ezt a változót már unsetelni se lehet, uj értéket se lehet neki adni, semmi. Tehát ez így ha ciklusban van akkor egy gyönyörű memory leak.

tehát a megoldás a fentebbi példa esetén a következő:

try {
  $myclass = new CacheClass();
  $result = $myclass ->getValue();
} catch (\Exception $e) {
  $myclass2 = new DataClass();
  $result = $myclass2 ->getValue(); 
}

tehát a lényeg: más néven példányosítsd az objektumot.

amugy azt nem mondtam: 5.4 es php van fenn a szerveren, lehet hogy verzió-specifikus dolog ez, de értelmes kommentet eddig nem találtam erről sehol, így gondoltam megosztom.

Post has attachment
Schneebergi kirándulás
PhotoPhotoPhotoPhotoPhoto
2013-05-21
158 Photos - View album

Post has attachment

Post has attachment
Wait while more posts are being loaded