« Ezért nem alszom »

JSP, JSF és egyéb nyalánkságok estére

Persze roppant jó dolog az egész, de a PHP után kicsit (teljesne) más szemléletet igényel, mert persze lehet ott is tervezési mintákról beszélni, csak azért amikor beül az ember egy ilyen elé, akkor látja hogy mennyire vicces az egész, és hogy is kéne igazából mennie.

Kommentek RSS ikon
A bejegyzéshez érkezett kommentek, amiket RSS csatornán is követhetsz.
milyen programnyelv ez?
Hibernate? Ha tetszik, akkor nézd meg ezt is: Doctrine.
Azért a PHP védelmében annyit szabadjon megjegyeznem, hogy ez nagyon nem a JSP-n (vagy mi a csuda ez) múlik. A C# ( ASP.Net), a Java és a PHP is csak egy-egy nyelv, előbbi kettőben (vagy körül) van pár advanced dolog, ami a PHP-ból fájóan hiányzik (bár a PHP 5.3 azért némi lemaradást pótol ezen a téren), olyan cukorkákra gondolok, mint például a linq, de alapjáraton tényleg csak 3 nyelv, amik közül az egyik itt rugalmasabb, a másik meg ott. Ami a PHP-nál fájhat, hogy nem jár hozzá gyárilag egy nyelvhez drótozott egy framework (ami van, az a minimálisnál is kevesebb, épp csak arra elég, hogy a lehetőség meglegyen webezésre meg shell-script írásra), ez viszont pont, hogy előny is lehet. Szóval a PHP-t önmagában összehasonlítani a Java+JSP-vel vagy a C#+ASP.Net-tel kicsit unfair. Egy PHP+<valami> jellegű összehasonlítás már inkább megállná a helyét, a valami helyére pedig keretrendszerek széles skálája helyettesíthető. (Ld: http://www.phpframeworks.com/ )
ZoliKa: Java

Maerlyn: ismerem a Doctrine-t. :)

Athos: ez teljesen jogos, de azért a PHP és a Java között már mint nyelv is nagyon sok hiányosság van. Ilyet el tudsz érni Symfony vagy bármelyik hasonló kaliberű keretrendszerrel, tény. Meg annyira nem bántom a PHP-t, nem véletlen használom én azt. :)
Akkor talán azt is tudod, hogy a Doctrine 2.0-ában hasonlóan, annotationökkel tudsz majd osztály-DB kapcsolatot definiálni. Nem is az ActiveRecord mintára fog alapulni.

Másrészt: nemrég a php wikijében megjelent egy RFC az annotationökről, remélhetőleg behozzák itt is nyelvi szintű elemként, és akkor reflectionnal egyszerűbb lesz az élet.

Amúgy a symfony+doctrine integráció egyszerűen odabasz. Java-val és hibernate-el még nem foglalkoztam, de a lakótársam ebben kódol mostanság, és meglepően jól tudunk ezekkel kapcsolatban ötletelni, annyira hasonlóak.
Maerlyn: egyébként sok a hasonlóság, igen. Amúgy jó dolog ez, az száz százalék, csak azért jócskán igényel tanulást is, mert elsőre annyinak tűnik hogy ő legenerál szépen mindent, aztán örülsz, de közben közel nem ez a helyzet.
Pff. Annotációk. Nagyon jó, hogy az alap dolgokat meg basznak helyre rakni. Épp ma szopott be munkatárs egy aranyos SOAP finomságot, hogy ha egy adott értéket nem castol át int-té, akkor akkora exceptionnal elszállt a fogadó rész, mint a ház. Persze jogos, csak épp a PHP részéről a típuskezelés akkora egy hányadék, hogy az hihetetlen.

És az ilyen aranyosságokról, mint például az ebből következő crc32/64bit bugokról ne is beszéljünk.
Jut eszembe, ActiveRecord, Doctrine, ésatöbbi ésatöbbi ésatöbbi. Pár hete azon elmélkedtünk munkatársakkal, hogy mégis mi a balherének kell azzal szívni, hogy először is húzunk egy OOP réteget a relációs adatbázis fölé, majd egy külön rétegben elkészítjük a modell részt, ahol látszólag megvalósítjuk a program működését.

Totál felesleges erőltetni a relációs adatbázisokat, ha egyszer nem úgy akarjuk használni őket. Sokkal célszerűbb lenne inkább valamilyen perzisztens objektumtár, mintsem szenvedni a relációs-adatbázisba való belegyömöszöléssel.

Ötlet egyébként onnan jött, hogy egy mintegy 60-70 táblára szétszedett adatszerkezetet kellett eltárolni, ami igazából egyetlen objektumból indult ki. Persze, ez nem a teljes DB, az egész áll vagy 270 táblából, dehát ilyenek ezek az ügyviteli rendszerek.
saxus: típuskezelés? Az van a PHP-ben? :D

saxus: mondjuk jó dolog a Doctrine meg a többi, egy blogmotorra vagy egy átlag netes projektre, de én már komolyabb egyedi ötleteket sem feltétlenül bíznék rá. Elhiszem én hogy jó, de alapjáraton nem bízok a generált témákban, lehet hogy időigényesebb, de én amondó vagyok hogy minden program saját igényeket állít elő, és ezeket sajátos módon kell megvalósítani. (Persze egy framework használata az teljesen oké, csak érted mire gondolok.)
Mefi: Ezek szerint elbeszélünk egymás mellett. Szvsz sokszor felesleges lenne ma már erőltetni a relációs adatbáziskezelést.

Generált dolgok jó dolgok, csak ésszel kell intézni. Mi alapvetően megpróbálunk minden sallangmunkát generálni, mert időszűke az erősen megmutatkozik. Pl. az a 70 táblás modul, amit emlegettem az úgy készült, hogy először a saját DB leíró nyelvünkben definiáltuk az adattáblákat (kb. 5-8 db volt + a rengeteg kiegészítő tábla, ami mind generált egy adott szabály szerint), majd ebből építettünk adatbázist és „fapad” fájlokat.

Ennek a „fapad” dolognak megvan a maga belső sztorija, de most nem mennék bele. Lényege, hogy ezekből lehet adatosztályokat generálni.

Ezeknek az adatosztályok PHPDoc-s részét kiegészítve saját annotáció szerűségekkel, azokból generáltuk az űrlapokat, előzmény-táblázatokat. Utána már csak össze kellett pakolni egy halomba meg meg kellett jeleníteni őket (ez kb. 8 metódus megírását jelentette a modulban + a „popup”-ba felugró űrlapok/táblázatok megjelenítését és mentését kezelő három metódust.*)

Így sikerült egy kb. másfél hét alatt összerakni az egész modult, ahelyett, hogy kb. 2 hónapig reszeltük volna az egész modult.

* Minden egy sémára lett leegyszerűsítve, űrlapok kezelését lényegében a keretrendszerünk végzi, annyi, hogy megjelenítéskor tudatni kell a kerettel, hogy erre még később szükség lesz, valamint az egész cuccot visszakapom még a kerettől, amikor már lényegében csak menteni kell az adatokat – ami egy save() hívása az adatosztályra általában. Validálást és minden egyebet a keretrendszer elintéz. Megszenvedtünk vele anno, de így tényleg jóval kevesebb idő az egész bazár, mintha megírnánk mindent egyesével.
Új komment

Itt az adott bejegyzésben elhangzottakhoz szólhatsz hozzá. Ha primitív, csúnya, vagy bunkó erkölcsről teszel tanúbizonyságot, tuti, hogy kimoderállak és rosszat mondok rólad. A hozzászólás nem kötelező, amit írsz vállald föl!

Ezeket az adatokat - ha a böngésződ kezeli a kukikat - csak egyszer kell megadnod, később módosíthatod.

Ha van gravatarod - és a gravataros e-mail-címeddel kommentálsz -, akkor az megjelenik. Ha nincs, vagy nem tudod miaz, akkor olvasd el az útmutatót és regisztrálj.

Neved: E-mail címed (nem jelenik meg): Webszájtod (ha van): Kommented: Mennyi négy és négy összege?
Ez védelmi célokat szolgál, szimplán írd be a fenti összeadás összegét!

A kommentedet írhatod nagyobb mezőbe vagy akár formázhatod is, de ha nem szalonképes, akkor moderálom!

Ajánló
Ebben a témában, esetleg ezen a napon voltak még ilyenek is:

Skype 4.0 (2009. február 13., 11:37:23)
Két bosszantó apróság (2008. július 25., 11:55:45)
Makkom van! (2010. október 20., 09:17:33)

Érdekességek
Száraz számok, pusztán csak tények:

Ez a bejegyzés 713 napja született, 87 szóból, és 394 karakterből áll. Ajánlhatod bizonyos linkgyűjtő oldalaknak: