Feltétlenül szükséges PHP 5-ben objektumokat használni?
Sziasztok!
Kezdő PHP tanonc vagyok, az ismereteimet a 'Tanuljuk meg a PHP5 használatát 24 óra alatt' című könyvből szedem. A lényeg a lényeg, feltétlenül szükséges PHP-ben objektumokat használni? Egy haverom azt mondja, hogy felesleges, de szeretném a megerősítéseteket kérni. Biztos nem véletlenül kerültek be, ha értelmetlen lenne.
Köszi a választ!
NetBandita
■ Kezdő PHP tanonc vagyok, az ismereteimet a 'Tanuljuk meg a PHP5 használatát 24 óra alatt' című könyvből szedem. A lényeg a lényeg, feltétlenül szükséges PHP-ben objektumokat használni? Egy haverom azt mondja, hogy felesleges, de szeretném a megerősítéseteket kérni. Biztos nem véletlenül kerültek be, ha értelmetlen lenne.
Köszi a választ!
NetBandita
Nem szükséges
De hasznos
Én is féltem tőle, de valójában sokkal könnyebb, mint a spagetti. Főleg, ha már mások megírták előtted, neked csak használatba kell venni...:)
Nagyon hasznos volt Harry Fuecks The PHP Anthology - Object Oriented PHP Solutions c. könyve. Az első fejezet egy kicsit sokkoló (polimorfizmus, miegymás), de utána nagyon élvezetes - már ha nem perverzió ezt mondani egy PHP-könyvről.
!$oop != $spagetti
A spagetti kód az azt jelenti, hogy a HTML és a PHP keverve van. Ezt megteheted akár OOP kód esetébne is, de abszolút nem sajátja a struktúrált megközelítésnek.
Felhő
Hoppá...
További tésztás kifejezések a GNU Project oldalán...:)
PHP-ra vonatkoztatva
Felhő
A könyved...
Igen...
FPDF
Az FPDF könyvtárat nagyon tudom ajánlani ismerkedéshez Nem kell hozzá semmit telepíteni, és a végeredmény látványos. Egy olyan osztály, ami valami nagyon konkrét, kézzelfogható dolgot produkál, az elején sokat segíthet a megértésben.
Csak letöltöd az fpdf.php fájlt, be-include-olod, és már kezdhetsz is vele dolgozni. Jó bevezető tutorialok vannak hozzá, és sok bővítmény szkript. A PDF készítési ismeret pedig sokszor fog még jól jönni.
Másik jó választás a PEAR HTML_Quickform, ha lehet, még egyszerűbb: HTML-t, valamint validáló PHP és Javascript kódot produkál. Csak egy kicsit macerásabb vele a kezdés, be kell üzemelni előbb a PEAR-t.
nekem sem jött be
oo
Erről van szó
Na ez az. OOP-vel nem kell írnod semmit. Már minden problémát megoldottak helyetted, neked csak össze kell legózni. Pl. egy szokványos PDF oldal generálása csak 15-20 sor, és egyiknek a megírásához se kell több, mint 3 agysejt...:)
Továbbá szép. És hát egyszer élünk, ez is egy szempont.
oo
Az OO azért nem ez...
Természetesen...
Egyébként azt hiszem, hogy mire valaki összelegóz egy portálrendszert, valószínűleg a szemléletből is ragad rá valami. Már maga az, hogy látjuk, mi megy be és mi jön ki, rávezeti az embert alapvető felismerésekre a belső folyamatokról. Még azt is megkockáztatom, hogy "civil" másképp nem is fogja megérteni, csak úgy, hogy előbb elkezd legózni, aztán egyre lejjebb ássa magát a kódba. Lehet persze, hogy programozó egyetemen ez szentségtörés. A Harry Fuecks könyv azért volt jó, mert nem misztifikálta túl a dolgot, konkrét megoldásokat mutatott be gyakori problémákra.
Kiemelés tőlem.
Na de hogy valami konkrét dologgal is foglalkozzunk, ha valaki tud jó magyar nyelvű bevezetést az OOP-ba, itt az idő, hogy megossza velünk.
oo sokadszor
(megj: a legtöbb informatikus / programozó, aki ezt a pályát választja, az már az előtt ismeri legalább az oo alapjait, hogy a "programozó egyetemre" menne, és nagyon különböző módokon és sorrendben tanulják meg. ott már csak a miheztartás végett adják le az alapokat. még egy apróság: tudom, hogy nem erre ment ki a dolog, de egyetemi szinten nem programozót szoktak képezni, hanem informatikust)
Olló
Régen volt már a Közgáz, de úgy emlékszem, hogy hatékonyság = eredmény/munka. Ha a munka csökken, a hatékonyság növekszik...:)))
Én meg történetesen "marketing-kommunikációs üzemgazdász" vagyok - csak meg ne kérdezd, mi az...:)))))))))))
hatékonyság
(szakma: én "műszaki informatikus mérnöknek" készülök ;))
naiv
Ez NAGYON naiv megközelítés/hozzáállás. OOP programozás az nem abból áll, hogy használsz objektumokat.
És ugyanennyi sor lenne egy struktúrált PDF könyvtár használata esetébne is.
Felhő
u.i. Nem az OOP ellen szóltam, csak dobálózzunk az ilyen kijelentésekkel óvatosan.
Tekereg
Erre már Dúalon is ráugrott, de ha elolvasod a szálat, láthatod, hogy itt nem az OOP programozásról volt szó, hanem a hatékonyságról.
A 15-20 sor megintcsak a hatékonyságra vonatkozott (ti. hogy nem neked kell megírni). Persze ha létezik struktúrált PDF könyvtár, azt is nyilván elég könnyű használni - elméletben. Gyakorlatban egy PDF könyvtár értékét az extrák adják (az FPDF-hez van vagy 70 féle) - ezt már csak OOP-vel lehet kezelhetővé tenni.
OOP - hatékonyság
Amilyen példákat eddig felhoztál, azok többsége nem aknázza ki az OOP-t lehetőségeit, hogy azokat ne lehetne struktúráltan is megvalósítani. Szerintem is könnyebb OOP (nekem erre áll rá az agyam), de ettől függelenül ne mondjuk olyan (kicsit közhelyszerű) dolgokat, amik nem állják meg a helyüket.
Annó Carnában csináltam egy kis belső oktató anyagot OOP újrhasznosítás (~hatékonyság) témájáról az OOP vs struktúrált programozás vionylatában, ha lesz időm és meg van még, akkor felnyomom ide.
Felhő
hoppaaa
Es akkor jon az, hogy kapok egy "profi" siteot, ahol ket PEAR konyvtar van lerakva, ket FCK editorral, 4 helyen a config, a tobbnyelvusites abbol all, hogy 3szor teszik le az oldalakat _hu, _de, _en vegzodesekkel, a menupontok dinamikusan szerkesztheto szovegehez kulon kulon adattabla van rendelve stb.
Na es akkor jon a fonokom, hogy ugyan mar legyek kedves itt ott modositani, es nem erti miert ver ki a viz.
Nezetem szerint eloszor tanuljon meg a valakozo szellemu programozni, lassa at a feladatot, tanuljon meg tervezni(!), atlatni a problemat, tanulja meg, hogy a programozas nem ott kezdodik, amikor mar le tudok irni egy echo "hello word" utan egy new szocskaval egy 15 sorost!
Amikor ugy erzi mar magatol, hogy a linearis programok nehezen jonnek ossze (nem lehet goto-zni, mint a BASICben), akkor el lehet kezdeni strukturalni, es ha mar az is keves, mert ismet nehezen atlathato a kod, akkor nezzunk utana mivel lehetne meg jobban egyszerusiteni a sajat munkankat.
Ugy gondolom, hogy ha valakinek nehez az objektumok hasznalatanak megertese, az azert van, mert nincsen ra szuksege! Felesleges kovetelmeny lenne ennek elenere raszoritani valakit az OOPre.
Gondoljuk meg mi lenne, ha kovacs tanoncnak nem egy kis kalapcsot adnanak eloszor a kezebe, hanem egy 10 kilosat, vagy odaallitanak, a gozkalapcs melle, hogy forgassa az izzo vasat. A 10 kilost nem birna el, a nagy pedig kiverne a kezebol az anyagot, akar halalos sebet is ejtve.
Kezdjen mindenki a kis kalapaccsal, azzal is lehet szep dolgokat alkotni!
OK
Igen, ezzel egyetértek. Ahogy most visszagondolok, az elején én is azzal küzdöttem, hogy nem tudtam, mi a kérdés, amire az OOP a válasz.
Mi a kerdes
csab.
Kör
Személyes tapasztalat: OOP-t nekem szinte soha nem kell írni. Olvasni viszont minden nap. Ha más nem, Javascript.
Aki nem tud OO könyvtárakat olvasni, használni, az már eleve nem kap munkát. Amennyire én látom.
Vagy...
Véletlenül JavaScriptet is tanulok szinkronban a PHP-vel. Egyelőre csak a w3schools JS basic-et vittem végig, ahol még objektumokról nem esett szó. Az OOP szemlélet elsajátítására az jó alap?
Nem ajánlom
A múlt héten kellett csinálnom egy tabos belső navigációt, ahol a tabok div horgonyokra mutatnak. Ezt találtam hozzá: DomTabs. Egy csúnya Javascript osztállyal oldotta meg, azt mondtam, megcsinálom szebben. Mit mondjak - nem csináltam meg. Az összes komoly JS könyvtár tele van ilyen kényszermegoldásokkal. OOP-nek OOP, de nem érdemes ezeken tanulni, csak összezavar.
Az egyik Yahoo JS fejlesztő mondta nekem, hogy a PHP értelmezőre minden óvodás tud OOP-t írni - böngészőre fejleszteni, az már valami...:)
Kötekedés ;)
Ebből a két állításból kettő elég gyenge lábakon áll. Kíváncsi lennék, hogy mire alapoztad.
Ez így ebben a formában elég komolytalan állítás. OOP szemlélettel megfogalmazni egy problémát az nyelv független dolog.
Felhő
DOM
Nem értem, az első állítással mi a gond. Légyszi homályosíts fel..:)
A második állítást széleskörű és mélyreható személyes tapasztalatokra alapozom. A böngészők általában jól kezelik a, nevezzük így, mozgásokat (kinyílik, becsukódik, eltűnik, megjelenik), de például stílust csak az FF hajlandó rendesen változtatni, akár "direktben", akár a class attribútumon keresztül. A definíció szerint a DOM egy
A content és a structure oké, a style viszont vacak, egyébként - meglepő módon - Operában is.
Elnézést, tévesen idéztem a Yahoo-s egyént. Nem konkrétan az OOP-ről beszélt, hanem úgy általában a JS fejlesztésről - ami szerinte nehezebb, mint a PHP, a böngészők miatt.
re: DOM
Csak túl általános, annyi. Rengeteg olyan cucc van JS-hez is, aminek köze sincs a DOM-hoz. Crypt könyvtár, nyelvi elemeket kibővítő cuccok vagy akár AJAX kommunikációt megkönnyítő könyvtár.
Olvasd el a saját definíciód. A DOM a felületet biztosítja, de az nem az ő hibája, hogy a stílusokat az IE nem kezeli jól. Ez nem a DOM feladata.
Még ebben a formában sem mondanám, hogy egyet értek vele, mert így meg nem igazán tekinteném összehasonlíthatónak a kettőt. Melyiket nehezebb megcsinálni: egy modularizálható CMS rendszert, vagy pedig egy Gmail-t? ;)
Felhő
DOM?
Nem akarom elvinni a topikot DOM irányba, úgyhogy csak jelzésszerűen néhány IE hiányosság, amibe állandóan belefutok: cssRules[], deleteRule(), insertRule(), getPropertyValue(), setProperty() (Főleg a legutóbbi nagyon kellemetlen tud lenni.)
Újraolvasva a topikot, lehet, hogy tényleg félreérthető voltam OOP-val kapcsolatban, de szerencsére helyre lettek téve a dolgok..:) Mindenesetre NetBandita talál néhány könyv linket - remélhetőleg fogja tudni őket használni.
Edit
konkrétum
Na látod, ez így már mindjárt másképp hangzik, mint általánosságban, hogy "elég vacak". Ezek közül az első 3-nak van IE alatti megfelelője, az utóbbi 2-ről nem tudom.
Felhő
oo
Mert ha egyszer beleszaladok egy java tanulásba, akkor ott ez lesz.
Igazán még én se értem a lényeget, de a kezdeti agybénuláson már túl vagyok...
Aztán jött a másik kollega és húzott egy párhuzamot az emberei gondolkodás és az OO programozás között. Na így már sokkal könnyebb.
Én kíváncsi lennék
Példa
Tegyük fel, hogy egy HTML kódot akarsz kinyomni a kimenetre. De ugye, mit ad Isten, echo parancsokkal nyomtad ki és ennek következtében a kód úgy néz ki, mint a falra hányt zöldborsó. Szal guszta, na.
Ekkor fogod az én kis kódformázó output osztályomat: (nem kell megérteni!)
Remélem, ez segített megérteni. Szal az osztályom belső működését nem kell ismerned, anélkül is tudod használni. Azon felül jobb lehetőséget ad a struktúrálásra.
Egyéb szép dolgok:
- private változók/függvények (lásd fent a _processindenting. Kívülről nem tudod meghívni)
- öröklődés:
egy "állat" osztályból örökölheted a macskát és az egeret. Akkor az utóbbiak az előbbi összes függvényével rendelkezni fognak anélkül, hogy külön le kellene programoznod.
stb, stb, stb.
php4 és az objektumok
hivatalosan az osztály változóit deklarálni kell:
a másik pedig, hogy
nem tudom kipróbáltad-e egyáltalán, de nem igaz. php4-ben nincsenek privát metódusok. az aláhúzásjel nem ér semmit se egy változónál, se egy függvénynél.
gex
Jogos...
A példa célja a bemutatás volt és azt hiszem, annak meg is felelt. Ez az osztály volt éppen kéznél, ami elég egyszerű volt ahhoz, hogy kitegyem.
Mindenesetre tényleg igazad van.
Húú...
Konstruktív kritika
Nem...
OOP
Liebig Zsoltnak súlyosan igaza van.
PHP 24 óra
Hát erre a kérdésre szerintem nem az a jó válasz, hogy inkább nézd meg a Drupal motorját...:)
Többeknek, és nem az első hozzászólásra válaszoltam
Konkrétan?
csak konstruktívan...
-Nyékné G. Judit (szerk): Java 2 útikalauz programozóknak 1.3 (sajna nehéz beszerezni)
-Computerbooks, Együtt könyebb a programozás sorozat: C++
-Peter Moulding: PHP Fekete Könyv
Az első kettő ugyan lényegesen jobb konkrétan az OOP leírásában (a nélkül is érdemes elolvasni, hogy C++-t vagy Javát programoznál) viszont a harmadik meg php... meg persze biztos vannak más jó források is, de én ezeket ismerem úgy, hogy tényleg jók.
Objekumorientált szoftverfejlesztés
Felhő
könyv
óvatos oop :) szuper oop :)
nem kell objektumokat használni mindenáron. Viszont azért ez sok dologtól függ. :)) A minap pl. kaptunk egy mások által írt CMS-t, amihez modulokat kellett fejleszteni. Az egész forráskódjáról az első benyomásom az volt, hogy a fejlesztője éppen kiszabadult egy "obejktumorientált programozás" kurzusról és elhatározta, hogy ő most valami óriási dolgot alkot és csak OOP-vel, de aztán nem jött össze néki (az én nagy bánatomra, mert szívhatok vele).
Szóval tudás, projekt (méret, típus) dönti el mit használj. Hameg ebből élsz, akkor a projektvezető, tervező :))
Szerintem szuper dolog az OOP, és én nagyon szeretem használni, de nem ennek a módszernek a használatától függ, hogy "spagetti" típusú, avagy egyéb "csúnyácska" állagú forráskódot írsz-e avagy sem. :) Hanem a hozzáálásod... Persze ez nem mentesít a tanulás alól. :)
szép napot!
j.
Komoly vicc..
Szóval, egy cég gyártott a hadseregnek egy helikopter szimulátort. Aztán ezt a szimulátort eladták az ausztráloknak is. De hát mivel Ausztrália, ezért kellettek kenguruk is. Nosza, meg is valósítottak.
Egyetlen hiba volt az elképzelésben, méghozzá az, hogy a kenguru osztályt a katona osztályból származtatták. A szegény pilótatanonc meg csak azon csodálkozott, hogy miért lő rá a kenguru rakétavetővel.
-
És nem szabad elfelejteni, a prog. nyelvek nagyrésze még mindig a függvényekre épül, lásd php manuál, bár programozási nyelvek programozásához nem értek:)
üdv
BL
Hehe
-
De hát autót sem egyféleképpen lehet építeni, nem szabad a kreativitás kárára egy módszert alkalmazni. Tiéd a program, te fejleszted.
Egyébként milyen projekten dolgozol, ha megkérdezhetem? Nem hangzik egyszerűnek:)
üdv
BL
Igaz
A projekt, amin dolgozom egy CMS rendszer. Mondjuk, ez így kicsit pontatlan megfogalmazás, de a részletek titkosak, mert számos olyan ötlet van benne, hogy két szóból utánacsinálja bárki, de nagy ötlet, mert még sehol nem alkalmazzák. Szal a helyes megjelölés inkább A cms rendszer. :D Ha minden igaz, szeptemberre végzek vele (6 év fejlesztés!) és akkor lehet megnézni.
-
6 év az szép! Sőt az igen! Kiváncsivá tettél, ilyen hosszú fejlesztésről még nem is hallottam.
ON
Hogy fogtam fel az OO-t
Aztán már eljárásorientált fejjel gondolkozva még nehezebb volt. Ezért ez egyik haverom mondott egy ilyet:
C-ben a típus ugyebár megadja, hogy hány byte-on tárolódik az érték, megadja az értelmezési tartományt (vagyis hogy milyen értéket vehet fel) és a rajta végezhető műveleteket. Gondoljunk mondjuk az INT-re és megértjük ezt.
OO-ban tulajdonképp valami ilyemit csinálunk, csak itt a programozó hozza létre a "típust" (osztály), megadja a "felvehető értékeket" (osztályváltozók stb.) és hogy milyen "műveletek" végezhetők rajta (metódusok).
Bár ez a levezetés valószínűleg teljesen hibás, de arra jó, hogy kiindulási pontot adjon az objektum fogalmának megértéséhez. Ha ez megvan, akkor már könnyebben tanulható az egész OO jelenség is, és akkor nem kell ilyet kérdezni, hogy kell-e vagy jó-e vagy hasznos-e. A végén akarni fogod. Önként. És jó lesz :)
-
http://www.kiskapu.hu/index.php?BODY=BookInfo&OP=details&ID=34646&VISIT=1
nagyon hasznos, mert az első könyv fele csak a módszertanról szól, és csak utána kezd bele a Java-ba.
üdv
BL
elképzelés
Tegnap kezdem el a "PHP fejlesztés felsőfokon" című könyvet, akkor értettem meg. (legalábbis feltételezem, h értem)
egységbe zárás
Ha már így közelíted meg, akkor szerencsésbb az a megfogalmazás: hogy egy osztály egységbe zár egy adott adatstruktúrát, és az azokat kezelni képes függvényeket.
Elképzelheted úgy is, hogy van egy tömböd, ami egy maghatározott struktúrában leír egy valamilyen entitást (dógot). Ha írsz egy ezt kezleni képes függvényeket, akkor mindig át kell adnod azoknak első paraméterként az éppen aktuálisan kezelendő tömböt.
Na egy osztály esetében a példányosított objektum tartalmazza ezt a tömböt, és a kezelő függvényeket ezen meghívva azt éred el, hogy ezek az aktuális példány adataival fognak dolgozni.
Felhő