Atpakaļ uz pirmo lapu

laacz » 2003 » 29. marts

PHP && OOP

13:57 @ 2003-03-29 = 30 blabla  

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.

<– cut :: „It's a matter of thinking…” ->

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.

1 jb4 @ 14:20 (2003. gada 29. marts)

es lasu
http://www.phppatterns.com un tur saitees noraadiitos materiaalus, kaa arii
http://www.xoops.org sourci

2 waters @ 15:00 (2003. gada 29. marts)

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.

3 Arturs @ 15:17 (2003. gada 29. marts)

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ā.

4 laacz @ 15:24 (2003. gada 29. marts)

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?

5 to waters @ 19:29 (2003. gada 29. marts)

tas priekshmets bija ievads OOT ( objekt orienteetaa tehnologjija) …. hehzz pat nezinam, ko esam maaciijushies

6 Smejmoon @ 12:05 (2003. gada 30. marts)

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 .. :))

7 Smejmoon @ 12:07 (2003. gada 30. marts)

<– 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 :)

8 misame @ 12:40 (2003. gada 30. marts)

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

9 Smejmoon @ 13:05 (2003. gada 30. marts)

takš …

PHP ir dažas problēmas, kas man nepatīk.

* namespaces -
1) globālā namespace
2) funkciju lokālā
3) objektu/klašu
4) superglobālie masīvi
… kas vēl?

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)

10 Smejmoon @ 13:12 (2003. gada 30. marts)

* mantošana (inheritance) -

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.

11 Smejmoon @ 13:18 (2003. gada 30. marts)

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 ;–>

12 ulzha @ 14:15 (2003. gada 30. marts)

Tas pats ocw.mit.edu software engineering — man likaas diezgan labs! Un tur jau arii references uz zinaatniekiem & publikaacijaam bija…

13 misame @ 17:03 (2003. gada 30. marts)

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)

14 jb4 @ 22:21 (2003. gada 30. marts)

http://www.sitepointforums.com/showthrea…

http://www.phpvolcano.com/eide/php5.php?…

http://talks.php.net/show.php/php5intro/

smejmoon jau triis meeneshus ber vienu un to pashu. vaig tikai pacietiibu, vecais, pacietiibu

15 laacz @ 22:31 (2003. gada 30. marts)

jb4, par PHP5 man ir savi uzskati, kuri ir gana neglaimojoši jamajam. Un vispār Zend'am.

16 jb4 @ 22:37 (2003. gada 30. marts)

skaidrs, ka tev ir savi uzskati. klaaj valjaa.

17 misame @ 23:45 (2003. gada 30. marts)

laacz, vispār izklausās diezgan aizdomīgi — Tev jau ir viedoklis par kaut ko, kā nav. Un pie kam — negatīvs.

18 jb4 @ 00:39 (2003. gada 31. marts)

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.

19 misame @ 08:06 (2003. gada 31. marts)

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. ;)

20 laacz @ 08:44 (2003. gada 31. marts)

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.

21 Smejmoon @ 13:19 (2003. gada 31. marts)

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 ..

22 Smejmoon @ 13:20 (2003. gada 31. marts)

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?

23 Arturs @ 14:08 (2003. gada 31. marts)

Objektu saraksta piemērs:

1. Saraksts, kas sastāv no objektiem, kur katrs objekts apraksta telfona iekārtu (šo mierīgi var realizēt procedurālajā programmēšanā).
2. Katra telefona iekārta var būt vai nu analogais telefons vai mobīlais — kaut kas šiem abiem varētu būt kopīgs, bet pamatā abiem atbilst dažādas metodes un dati.(šo joprojām var realizēt proc. prog., bet jau jāķēpājas).
3. Mēs nevēlamies katru reizi interesēties vai telefons ir analogais vai mobīlais, ja jāizpilda funkcijas/procedūras, kas kopīgas abiem tipiem (šo, cik zinu, proc. prog. precīzi vairs nevar realizēt. Protams, vienmēr jau eksistē visādi apvedceļrisinājumi, bet būtu labi, ja kodu spētu lasīt ne tikai tā autors vien).

24 laacz @ 14:13 (2003. gada 31. marts)

Arturs, nu nez. Tas IMHO darās vienkārši.

25 misame @ 14:44 (2003. gada 31. marts)

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.

26 jannis @ 14:57 (2003. gada 31. marts)

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.

27 Smejmoon @ 14:48 (2003. gada 01. aprīlis)

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

28 Smejmoon @ 15:03 (2003. gada 01. aprīlis)

laikam jau tur tā lieta, ka OO sāk atmaksāties pie lielākiem koda daudzumiem .. un tādus piemērus uzreiz nepadosi ..

29 sorehead @ 20:52 (2003. gada 23. maijs)

Par oop var daudz palasiities seit. Ja reiz tev ir veelme apguut oop pieeju. http://64.78.49.204/

30 xFib @ 20:25 (2004. gada 03. jūnijs)

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 :(.

Kā tu saucies:
Tava e-pasta adresīte:
(nevienam netiks rādīta, vai dota; pat pie komentāra ne)
Ko teiksi?
FYI
* Formatēšana: iekļaujot tekstu no abām pusēm iekā '//', tas iznāks kursīvā: //teksts// (teksts), bet treknu tekstu var dabūt ar '**' katrā pusē: **teksts** (teksts), savukārt pasvītrotu ar '__': __teksts__ (teksts).
* Enteri tiek automātiski pārtaisīti par enteriem. Jebkurš HTML (izņemot <BR.*>) tiek parādīts, kā ievadīts (ne HTML'iski)
* E-pastu var vadīt droši iekšā, ja ir bailes no spambotiem. Tas tiek aizsargāts no jamajiem.
* Jebkurš url'is (www.kaka.com, http://kaka.com/, …) tiek automātiski pārtaisīts par spiežamu prieku (www.kaka.com, http://kaka.com/, …)
* Ko nozīmē 'detransliterēšana'? Manuprāt sen jau ir laiks sākt rakstīt nevis translitā (aaboljiishi), bet gan normāliem letiņu burtiem (āboļīši). Tad nu tieši to arī dara attiecīgā poga - pārveido tekstu no translita uz parastu. Gadās kļūmītes, bet labāk šitā nekā nekā.
 

Valid CSS! Valid XHTML 1.0 Transitional! Valid RSS! Valid Atom!
Tātad tā. Kopīraita notice. Viss materiāls, kas atrodams šajā saitā nedrīkst tikt izplatīts, kopēts, jebkādi citādi reproducēts vai izmantots bez manas (laacz) rakstiskas atļaujas. šīs tiesības man laipni piedāvā Autortiesību Likums.
Jebkura informācija, kuru kāds labprātīgi publicē šajā saitā (piemēram, komentāri), pieder tās autoram. Taču, ievietojot infromāciju šajā saitā, tās autors sniedz saita īpašniekam tiesības to daļēji vai pilnā apjomā lietot, izplatīt, reproducēt, modificēt, adaptēt, publicēt, tulkot, publiski demonstrēt. Saita īpašnieks ir tiesīgs jebkuru komentāru jebkurā brīdī dzēst, vai modificēt.
© 1996 — 2025 laacz. Visas tiesības… nu jūs jau zināt, kur.
Spēcināts ar SPP (S Pivom Potjaņet) v2.0b (code name Marasmus)
Hostingu laipni piedāvā DEAC.

laacz blog activity

Top.LV

 

Lapa izlīdusi no servera dzīlēm 0.03350 sekundē(s)