Türelmi idő, új út
Munkám és magánéletem végett az elmúlt néhány hónapban nem sokat piszkáltam a Sparcle kódját, és most - ahogy szétnéztem a nagyvilágban - vettem csak észre, hogy idő közben kijött a PHP 5.3 a1 release (update: a NEWS alapján már az alpha-3 is létezik). Türelmesen végigolvastam a változtatások tetemes listáját, és elégedett mosollyal konstatáltam ezeket az igen szerencsés és szép megoldásokat - amelyek egyébként egészen lázba is hoztak. Aztán gondolkodtam. Hánytam-vetettem és arra jutottam, hogy a fejlesztést felfüggesztem a stabil 5.3 megjelenéséig. Indoklás és változások listája a hajtás után...
Belegondoltam, hogy elvileg nyakunkon van a PHP következő generációja, a 6-os verziószámú, amelyben - ha jól tudom - az 5-ös ág összes újdonsága megtalálható lesz. Emellett belegondoltam abba is, hogy az egész rendszer kódjával nem valószínű, hogy kész leszek az 5.3.0 megjelenéséig, és mivel annyi hasznos dolgot tartalmaz, amelyek együttesen nem kevés fejfájástól szabadítanak meg (lásd late static binding, amely kimondottan hasznos például Singleton osztályoknál), nem látom értelmét annak, hogy megírjam a kód buta verzióját, aztán egy-két hónap múlva lecseréljem az egészet 5.3.0-ra. Nekem tervezési szempontból a legfontosabb az, hogy a kerülőutakat mellőzve egy igényes és kezelhető kódbázis álljon össze, amit a PHP 5.2-es ága bizonyos területeken megnehezít. Az 5.3-ban érkezett újdonságok tárháza miatt így is szükséges néhány megoldás újragondolása, és mindenképp törekedni fogok arra, hogy maximálisan kihasználjam (de az értelem határáig) az 5.3 nyújtotta újdonságokat, amelyek a továbbiakban irdatlanul meg fogják könnyíteni mind a saját, mind a későbbi más fejlesztők életét.
Most, hogy belecsöppentem a Java fortyogó világába, amúgy is felmerült néhány elképzelés bennem a Stream osztálycsoport kapcsán, amiket szeretnék mindenképp bevezetni, mivel a Sparcle Stream koncepciója meglehetősen pejhes tollú, jól jöhet egy gyakorlatibb környezetből átemelni a hasznos és bevált szemléletmódot.
Ami egészen bizonyosan változni fog:
- Vissza kerül a kódba a Singleton absztrakt osztály
- Egy erőforrás osztálycsoport is kivitelezésre fog kerülni, amelynek a feladata lesz a különböző erőforrások reprezentálása, státuszolása, menedzselése (allokálás, delokálás, refaktor), ez két fő osztály köré fog szerveződni: az egyik az erőforrás azonosító (amellyel egy adott erőforrást egyedileg lehet azonosítani, pl. URL, filepath), a másik maga az erőforrás.
- A módosított Stream koncepcióban az adatfolyamok az új erőforrás osztályokkal fognak dolgozni.
- A rendszer osztályait PHAR csomagokba fogom szervezni, minden csomag saját névtérbe fog tartozni, a korábban ütközési kényszerből adott osztályneveket megváltoztatom és megszűntetem az "S" és "R" osztálynév prefixeket is.
- Osztályok fogják reprezentálni a HTTP protokol egyes elemeit, úgy is mint a request-et, a header-t, a response-t, a GET és POST paramétereket, és a többit.
- Az internacionalizáció legszéleskörűbb támogatása érdekében az összes elemi változó típusra készülni fog egy-egy osztály. Használatuk egy ideig bizonyosan kicsit kényelmetlen lesz, de talán előbb vagy utóbb a PHP is rendelkezni fog az operator overloading nyújtotta előnyökkel.
További változtatások ezen felül is lehetnek, de ezek a teljesen biztosak.
*UPDATE*
Az objektumokhoz kapcsolódó operátorok felülbírálásához tartozik egy PECL kiterjesztés , amely egyelőre minden hír és jel szerint majdnem egészen biztosan nem lesz része a PHP core-nak, bár erőteljesen döngetik a Zend Corp ajtaját azért, hogy az SPL-be kerüljön be erre egy kompakt megoldás.
- prometheus blogja
- A hozzászóláshoz regisztráció és belépés szükséges
- Küldés ismerősnek
- PDF változat

