Gacha Posted August 27, 2004 Report Share Posted August 27, 2004 Iedvesmojoties no Offtopic->slipetajs es ar bik gribu pamocīt to OOP. To oop ideju, kā tādu es beidzot esmu aptuveni sapratis, lasot php.net es izveidoju savu pirmo oop klasi :D <?php Class tests { var $x; function pluss($sk, $cik){ $this->x = $sk + $cik; return $this->x; } function minus($sk, $cik){ $this->x = $sk - $cik; return $this->x; } } $klase = new tests; echo $klase->pluss(10, 5).'<br />'; echo $klase->minus(10, 5).'<br />'; ?> Un pat strādā, bet protams ir daži jautājumi: No php-dev.lv: Mainīgais $this ir atsauce iekšējo objektu – to, kurā attiecīgais mainīgais pats atrodas... Nu man nesaprast, ka šitādā mēle ir uzrakstīts paskaidrojums es vispār no tā raksta neko daudz nesapratu kaut vai tas ir latviski, vairāk uzzināju no php.net kur ir angliski, bet paskaidrots normāli ar loģiku, nevis ar daiļrunību :) Nu tad tā, cik nopratu tad tas $this ir tas mainīgais, ko iesūtu klasē un visu laiku apstrādāju. Itkā saprotu, kas ir tas $x, bet gribētos zināt, kā tos VAR pareizi izmantot, lai tie būtu noderīgi un ko intresantu ar tiem varētu darīt. Lai es vairāk kaut ko saprastu, tad kāds man varētu palīdzēt izveidot vienkāršu testa klasi. Doma ir iesūtīt klasē textu un to apstrādāt ar => trim(), addslashes(), htmlspecialchars() un pieņemsim visus 5niekus pārveidot par vārdiem :) Bet ja varat, tad tā, lai saprotu :) Link to comment Share on other sites More sharing options...
bubu Posted August 27, 2004 Report Share Posted August 27, 2004 (edited) Ja esi ņēmies ar pascal record'iem: type rec = record x: integer; end; proedure do_something(var this: rec; y: integer); begin this.y := 10; end; Tātad tam this nozīme, ka tu izsaucot klases metodi, jāzin uz kuru objektu (konkrētu instanci), izsaukums attiecās, jo šinī gadījumā tu vari nodefinēt divus rekordus: var a, b: rec; do_something(a, 1); // this = a do_something(b, 2); // this = b Tava demo klase: class test { var $text; function test($text = '') // konstruktors { $this->$text = $text; } function apstrade() // trimo un slesho { $this->text = addslashes(trim($this->text)); } function convert() // 5 -> pieci { $this->text = str_replace('5', 'pieci', $this->text); } } // piemērs $a = new test('tral a lā 5 '); echo $a->text; // apskatamies kas ir sākumā $a->apstrade(); echo $a->text; // apskatamies kas iznācis $a->convert(); echo $a->text; // apskatamies kas iznācis $a->text = 'cic text'; echo $a->text; // apskatamies kas iznācis Edited August 27, 2004 by bubu Link to comment Share on other sites More sharing options...
рпр Posted August 27, 2004 Report Share Posted August 27, 2004 ja ir 2 klases, tad katraa var buut mainiigie ar vienaadiem nosaukumiem. class pirmaa { var $i = 5; } class otraa { var $i = 6; } pirmaa::i == 5 otraa::i == 6 $this class pirmaa { var $i = 5; function Funkcija() { // lai izmantoto mainiigo jaaraksta $this->i++; echo $this->i; // tas pats jaadara ja grib izsaukt klases funkciju $this->Funkcija2(); /// shitaa funkcija nav nodefineeta err } } Link to comment Share on other sites More sharing options...
Gacha Posted August 27, 2004 Author Report Share Posted August 27, 2004 Tnx jums abiem par piemēriem, tagad man ir skaidrs apmēram tik daudz lai kaut ko noderīgu varētu izveidot. Tagad tik japatrennējas un gan jau ar laiku tā lieta aizies :) Link to comment Share on other sites More sharing options...
Gacha Posted August 28, 2004 Author Report Share Posted August 28, 2004 (edited) Nu reku mēģinu uztaisīt klasi, kuru domāju izmantot datu ievietošanai un izvadišanai no DB. Class filtrs { var $data; var $opt; function filtrs(){ $this->data = ''; $this->opt = ''; } function db_in(){ $this->data = trim($this->data); $this->data = addslashes($this->data); } function db_out(){ $mas = explode(' ',$this->opt); if(in_array('bbcode', $mas)){ $this->data .= ' bbcode'; } if(in_array('html-on', $mas)){ $this->data .= ' html-on'; } if(in_array('html-off', $mas)){ $this->data .= ' html-off'; } if($this->opt == '' || in_array('main', $mas)){ $this->data .= ' main_filter'; } } } $klase = new filtrs; $klase->data = 'Tiek izmantoti šādi filtri: '; $klase->opt = 'bbcode html-on main'; $klase->db_out(); echo $klase->data; Itkā viss iet, tik gribēju zināt vai ko nedaru nepareizi, vai lieki. Varbūt kaut ko būtu labāk darīt savādāk. Vēl man intresē tie konstruktori, sapratu to aptuveno jēgu, bet ko vēl labu var ar tiem darīt? Un kas vēl OOP ir tāds specifisks? pagaidām zinu $this un konstruktori. Edited August 28, 2004 by Gacha Link to comment Share on other sites More sharing options...
bubu Posted August 29, 2004 Report Share Posted August 29, 2004 It kā jau klasi šādām vienkāršām darbībām īsti jēgas nav rakstīt, bet varēt jau var. Tev jāpadomā kā šo klasis sasaistīt ar citām tavām klasēm - datu izvilkšanu / ielikšanu DB, attēlošanu HTML kodā. Pašlaik par to es neko nevaru spriest, jo nav nekas :) Konstrukori ir vajadzīgi tikai tāpēc, lai varētu inicializēt klases mainīgos ar sākotnējām vērtībām / atvērt konekciju uz DB / atvērt failus, u.c. tāda vaida inicializācijas. Vēl viena spcifiska OOP lieta ir mantošana, kad tu paplašini klases funkcionalitāti veidojot jaunu klasi no dotās + liektot klāt papildus fjas / mainīgos (extends keywords) Link to comment Share on other sites More sharing options...
Gacha Posted August 29, 2004 Author Report Share Posted August 29, 2004 Nu es domāju, kad pabeigšu šo klasi ar visu ko tai domāju likt iekšā tā būs pietiekami liela :) Bet pagaidām ma ir svarīgi izveidot jebkādu klasi. Man šķiet, ka klases ir javeido atsevišķām lietām piemēram šādai apstrādei, mysql un vēl kaut kam, bet domāju, ka pilnībā kodēt tikai ar OOP nav labi. Un par to extended kaut ko dzirdeju, bet pagaidām vel neiebraucu, bet kad būs vajadzīgs tad jau sapratīšu. Link to comment Share on other sites More sharing options...
bubu Posted August 29, 2004 Report Share Posted August 29, 2004 Man atkal liekas tieši otrādi. Kautkādu datu kovertācijai / apstrādei (vienkāršai) es lietoju funkcijas. Bet tieši datu sasaistei db <-> html es lietotu OOP. Jo oop jau pēc būtības nav īsti jēgas, ja ir tikai viens triviāls objekts. Pielietojot agregācijas var veidot diezgan sarežģītas un mērogojamas (fleksibilitāte?) sistēmas. Bet nu katrs jau nonāk pie saviem secinājumiem un lietot to, kas pašam liekās ērtāks. Link to comment Share on other sites More sharing options...
Gacha Posted August 29, 2004 Author Report Share Posted August 29, 2004 Nu pagaidām es jau vēl neko nevaru spriest par OOP. Varbūt, kad būšu to iepazinis tuvāk, tad arī to daudz lietošu, bet pagaidām tikai dažviet! Link to comment Share on other sites More sharing options...
Kaklz Posted August 30, 2004 Report Share Posted August 30, 2004 brīdī, kad būsi daudz maz apguvis OOP un tā iespējas, sapratīsi, ka PHP gadījumā pilnīgs OOP ir bezjēdzīgs - notiek lieka lietu sarežģīšana vismaz PHP4 gadījumā pilnīgi noteikti. Link to comment Share on other sites More sharing options...
des Posted October 25, 2004 Report Share Posted October 25, 2004 brīdī, kad būsi daudz maz apguvis OOP un tā iespējas, sapratīsi, ka PHP gadījumā pilnīgs OOP ir bezjēdzīgs - notiek lieka lietu sarežģīšana vismaz PHP4 gadījumā pilnīgi noteikti. Heh... nu var jau katram projektam rakstiit savu klasi $application, kuraa tad sabaazst visas "briivaas" fjas un "briivos" mainiigos. Viens pluss tam ir - nav jaadomaa tik daudz, ka tik neaizmirst kaadaa fjaa nodefineet kaadu globaalo mainiigo. Neesmu gan nekad taa dariijis :) Tas veel vareetu atmaksaaties, ja taisa lielu intraneta aplikaaciju priesh nedaudziem lietotaajiem. Bet, ja jaataisa intensiivas lietoshanas web-aplikaaciju, tad gan naakas atgriezties pie vecajaam labajaam f-jaam un centiigi piedomaat, pie katras i/o operaacijas. Link to comment Share on other sites More sharing options...
Recommended Posts