PHP && OOP
Es tomēr uzskatu, ka OOP iekš PHP ir pārāk liels overheads.
Bez vērā ņemamas piepūles ir iespējams rakstīt arī procedurālu kodu, kurš būtu fleksibls, ērti lasāms, modificējams, papildināms, rejūzojams.
Tieši tāpat, kā bez vērā ņemamas piepūles (parasti tā arī sanāk) ir iespējams uzrakstīt pilnībā nesaprotamu, nekvalitatīvu un nekur nederīgu OOP kodu.
Protams, ka daudzi, izdzirdot abreviatūru OOP sāk agresīvi gūglēt pēc piemēriem. Šī ieinteresētība lielākoties beidzas pēc pirmās klases uzrakstīšanas.
Ja es iedomātos uzrakstīt SPP iekš OOP, tas nebūt nenozīmē, ka viss būs uzreizi object oriented. Tās būs tās pašas procedūras, funkcijas un dati, tikai sabāzti objektos. Un galu galā atgriežamies pie tā paša, ar ko sākām. Tikai šoreiz lepni "objektorientētu".
Un protams, tā vietā, lai kāds tev pastāstītu, kas, kā un kāpēc ir jādara, tevi nodirš, jo tu, redzies, nemāki objektorientēti programmēt. Tad nafig man to visu darīt, ja es labāk rakstu procedurāli un panāku to pašu efektu? Tieši to pašu efektu.
Patiesībā visu šo rakstu, jo vēlētos uzzināt, kur var palasīties par pašu OOP PHP kontekstā. Nē, man nevajag sintaksi, to visu es ellē ratā esmu lasījis ensimts reizes. Man nevajag klasi Pēcis un klasi Maija, kurām ir parent klases Tētis un Mamma.
Tas, ko es vēlos, ir step-by-step (kaut vai HOWTO formā) izstāstīts tas, kā jāplāno OO skripts, kā jāorganizē objekti, etc. Domāšanas veidu man, lūdzu. Metodiku man, lūdzu. Reālās dzīves reālos piemērus, nevis nodrāzto templeišu klasi man, lūdzu. OO man, lūdzu.
Pretējā gadījumā ejiet ieskrieties ar savu OOP.
jb4
2003. gada 29. martā, plkst. 14:20
es lasu http://www.phppatterns.com un tur saitees noraadiitos materiaalus, kaa arii http://www.xoops.org sourci
waters
2003. gada 29. martā, plkst. 15:00
RTU 2ajaa kursaa ir tads izveeles priekshmets Ievads OOP, tajaa gan programmeet iipashi nemaaca, bet ideologjiju gan. Aatri gan tas priekshmets man beidzaas, bet kaa piemeeru mums vajadzeeja ieksh Rational Rose uztaisiit banku automaatu sisteemu, ar visaam proceduuraam kaa iznjem naudu, apskataas bilanci, etc.
Arturs
2003. gada 29. martā, plkst. 15:17
Peikrītu, ka nevietā vai neveiksmīgi lietota OOP gadījumā neizpaužas nekāds OOP pārsvars pār procedurālo programmēšanu, taču, ja kāds ir ļoti papūlējies un uzrakstījis labu OOP kodu, tad tādu rejūzot (vai vienkārši lasīt) ir daudz patīkamāk un vienkāršāk nekā procedurālu kodu. Bez tam, nespēju iztēloties kā procedurālā programmēšanā realizēt kaut vai objektu saraksta analogu, respektīvi, ir lietas, kas principā ir iespējamas tikai OOP variantā.
laacz
2003. gada 29. martā, plkst. 15:24
Quoting Arturs: Bez tam, nespēju iztēloties kā procedurālā programmēšanā realizēt kaut vai objektu saraksta analogu...
Kas ir objektu saraksts? Pirms OOP ieviešanas vai tad tādu neviens nebija realizējis?
to waters
2003. gada 29. martā, plkst. 19:29
tas priekshmets bija ievads OOT ( objekt orienteetaa tehnologjija) .... hehzz pat nezinam, ko esam maaciijushies
Smejmoon
2003. gada 30. martā, plkst. 12:05
hmm ... :) .. laacz man vispaar patiik Tava attieksme .. vispirms pret standartiem, tad pret unikodi, tad pret 00 ;-)
es teu varu kautkaa sarakstiit, izstaastiit, kaa es to domaaju .. kautgan pasham man oo tagad iipashi neinteresee .. dod zinju, ja incee .. :))
Smejmoon
2003. gada 30. martā, plkst. 12:07
<-- cut :: "Pierakstos uz komentaariem..." -->
P.S. <-- cut :: "It"s a matter of thinking..." -->
Tur taas dubultaas peedinjas ieskreejushaas .. ja taas gjenereeja kods, tad ir gljuks :)
misame
2003. gada 30. martā, plkst. 12:40
Arturs: nabadziņš... vāja gan tev iztēle. Diez, kā viņi vispār nodzīvoja līdz mūsdienām, kamēr bija vēl tikai C? :) Paskaidrošu - lai uztaisītu linkotu sarakstu OOP vispār nav nepieciešama. Varbūt OOP lietošana izskaistina kodu, bet tas arī viss. Linkots saraksts sastāv no nodēm, kam piemīt vērtība (Arturam - jā, šī vērtība tikpat labi var būt objekta instances pointeris, zinu) un norāde uz nākamo šāda paša tipa nodi. Waters: jā, tas ir piemērs no Rumbaugh grāmatas, ja būtu bijis jātaisa iekš Grade, nevis ieksh Roses, tad varētu netaisīt, jo jamais tur samplēs jau bija ;D
Smejmoon
2003. gada 30. martā, plkst. 13:05
takš ...
PHP ir dažas problēmas, kas man nepatīk.
tie projekti, kuros netiek izmantoti objekti, bet globālā namespace, tiek piedrazoti ar prefiksiem ( mysql_magic_function, rdmbmsooaaee_magic_function).
pieagot mainīgo skaitam vienā namespace pieaug arī koda saprašanas kompleksitāte. man ir maza galva. (palīdziet latviskot http://smejmoon.lv/wiki/NameSpace)
Smejmoon
2003. gada 30. martā, plkst. 13:12
procedūru stilā to nevar eleganti izveidot (sakiet, kā var). tas palīdz nedomāt par kautkādas funcionalitates realizēšanu, ko Tu jau kādreiz esi darījis.
Smejmoon
2003. gada 30. martā, plkst. 13:18
citādi OO man ir vienkārši viens no moduļu viedošanas rīkiem. kā arī atbildības novelšanas veids.
nevis: kraasot(sienu, sarkanu) bet siena.kraasojies(sarkana)
Tagad rakājos un ieviešu savā kodā kautko no funkcionālās programmēšanas .. mūsdienās to tendenci sauc laikam Aspect-Oriented Programming ;->
ulzha
2003. gada 30. martā, plkst. 14:15
Tas pats ocw.mit.edu software engineering - man likaas diezgan labs! Un tur jau arii references uz zinaatniekiem & publikaacijaam bija...
misame
2003. gada 30. martā, plkst. 17:03
Ja drīkst, es mazliet vēl paspriedelēšu (jo sen nav gadījies kodēt kaut ko iekš PHP darba vajadzībām, tātad - amatieris). OO pieeju būtu vērts izmantot tad, kad ir dažādi pieejas veidi pēc būtības tam pašam objektam - tu nodrošini dažādus interfeisus, bet nedublē(netrīskāršo, nepieckāršo) kodu. Piemērs. Ieraksti(posti) iekš laacz.lv. Gribam, lai ierakstu varētu rediģēt iekš SPP admin frontenda, gribam, lai ieraksts parādītos pirmajā lapā 'īsajā versijā', gribam, lai parādītos pilns ieraksta teksts, gribam, lai ieraksts būtu atrodams arī RSSā. Skaidra lieta, ka visām šīm darbībām ir šis tas kopīgs - no kaut kurienes "ielasīties" un "izdrukāties". Attiecīgi veidojam klasi "ieraksts", kuram metode 'ielasies' (metode ielasies_no_mysql() būtu slikti, jo tad katra ieraksta ielasīšana būtu jauna selecta izpildīšana uz mysql, tātad -slikti. Līdz ar to vajadzētu kaut kādu citu klasi, kas būtu ierakstu tabula, kuru ielasa no mysqla [or whatever datu bāzes]). Nu, un pēc tam atliek tikai rakstīt augšā metodes kā publish_short(), publish_full(comments:boolean), publish_rss(), publish_edit() un tamlīdzīgas. Un tad jau metodes implementē pareizo outputa veidu - editošanai ieliek kaut kādu textboxi, RSSam saliek XML tagus utt utt. Pēc tam krāmējam to visu iekš post.h.php faila un includējam failu visur, kur vajag. Ja kādas metodes implementācija baigi gara, to var iznest vēl citā ārējā failā un includēt tikai tad, kad tiešām vajag (lai nemocītu parseri ar gariem koda gabaliem, ko jamais neizmantos). Rezultāts būs tāds, ka ieraksta klasi izmantojošajās lapās kods kļūs stipri vienkāršāks/īsāks, būs vieglāk neapmaldīties. Un būs nedaudz vairāk fleksibilitātes uz izmaiņām (piemēram, ieraksta klasei diezgan maz interesē, vai tiek izmantota mysql db vai kaut kāda cita, par to jau rūpējas viņas servisa klases) Ceru, ka šis bija par oop php kontekstā. PS. Bet ne-objektorientēti vienalga ir ĀTRĀK :PPPPP (vai vienkāršāk, tas cits jautājums)
jb4
2003. gada 30. martā, plkst. 22:21
http://www.sitepointforums.com/showthread.php?threadid=99471&referrerid=8347
http://www.phpvolcano.com/eide/php5.php?page=front
http://talks.php.net/show.php/php5intro/
smejmoon jau triis meeneshus ber vienu un to pashu. vaig tikai pacietiibu, vecais, pacietiibu
laacz
2003. gada 30. martā, plkst. 22:31
jb4, par PHP5 man ir savi uzskati, kuri ir gana neglaimojoši jamajam. Un vispār Zend'am.
jb4
2003. gada 30. martā, plkst. 22:37
skaidrs, ka tev ir savi uzskati. klaaj valjaa.
misame
2003. gada 30. martā, plkst. 23:45
laacz, vispār izklausās diezgan aizdomīgi - Tev jau ir viedoklis par kaut ko, kā nav. Un pie kam - negatīvs.
jb4
2003. gada 31. martā, plkst. 00:39
misame, teksts uz tava ekraana, kas redzams zilaa kraasaa un pasviitrots ar vienu pikseli platu liiniju, tiek saukts par saiti.
novietojot peles kursoru virs shii kraasainaa teksta un vienlaiciigi ar labaas rokas raadiitaajpirkstu nospiezhot peles kreiso taustinju iespeejams ielaadeet ekraanaa jaunu izskatu, kuraa savukaart var smelties dziives gudriibas par to kas ir un kas nav.
augstaak redzamas triis hipersaites, patreneejies uz kaadu no taam.
misame
2003. gada 31. martā, plkst. 08:06
jb4, jā, es palasījos arī tajās lapās, neuztraucies. Bet vienalga nesaprotu to, kāpēc kaut kas var nepatikt pirms tu vēl to esi palietojis. ;)
laacz
2003. gada 31. martā, plkst. 08:44
Misame, man ir viedoklis (personīgs un neprofesionāls:) par to vīziju, kuru uzbūruši ir cilvēki, kuri stāstījuši par to, kas iekš php5 būs un kas ne.
Smejmoon
2003. gada 31. martā, plkst. 13:19
jb4: mans viedoklis par php+00 nav mainiijies, jo manas domas par OO nav daudz mainiijushaas un PHP arii nav neko mainiijies :)
trenneejos noformuleeshanaa.
nedomaaju, ka php5 buus kaada panaceja ..
Smejmoon
2003. gada 31. martā, plkst. 13:20
pietam, tas, ka ieksh to php tiek taisiits OO kods neko labu neliecina .. overhead radiisies (no kaa jau laacz baidaas) un kapeec tad vajadziigs ir vecais labais dirty hack php?
Arturs
2003. gada 31. martā, plkst. 14:08
Objektu saraksta piemērs:
laacz
2003. gada 31. martā, plkst. 14:13
Arturs, nu nez. Tas IMHO darās vienkārši.
misame
2003. gada 31. martā, plkst. 14:44
Arturs: Tad priekš tam tiek uzrakstīta vienota funkcija, kas apskatās, vai dotais eksemplārs ir analogais vai mobilais un izpilda attiecīgo metodi.
jannis
2003. gada 31. martā, plkst. 14:57
nu man saak skjist ka tas OOP noder tikai ljoti specifiskos gadiijumos. un vispaar - vai tieshaam ir jeega pielikt teiksmin klasses failu ar 275 smukaam rindinjaam, ko izsauc ar padsmit smukaam rindinjaam, ja to pashu var veikt arii ar kaadaam padsmit bik dirty rindinjaam, kuras, ja pacenshas, arii var pataisiit citiem saprotamas.
Smejmoon
2003. gada 1. aprīlī, plkst. 14:48
visu to OO pasākumu realizācija tāpat notiek ar funciju tabulām un vēlnezko .. visu, kas ir rakstīts lietojot klasēs var uztaisīt savādāk.
abstrakcijas līmenis ir cits, nav jau runa par tehnisko realizāciju .. un vispār būtu labi koda piemērus :P
Smejmoon
2003. gada 1. aprīlī, plkst. 15:03
laikam jau tur tā lieta, ka OO sāk atmaksāties pie lielākiem koda daudzumiem .. un tādus piemērus uzreiz nepadosi ..
sorehead
2003. gada 23. maijā, plkst. 20:52
Par oop var daudz palasiities seit. Ja reiz tev ir veelme apguut oop pieeju. http://64.78.49.204/
xFib
2004. gada 3. jūnijā, plkst. 20:25
Mums skolotāja, kā viņu tur sauca Nikiforova laikam, tieši jūs uzslavēja. Teica ka esot baigi centušies ;). Žēl ka mums sanāca tikai 2 lekcijas pie viņas :(.
kautkas
2007. gada 1. janvārī, plkst. 23:30
Laba grāmata par OOP ir Thinking in C++. Tiesa, kā jau var nojaust pēc nosaukuma, runa nav par PHP, bet gan c++, bet vispār var attiecināt uz OOP kopumā.