Kratak uvod u OO PHP, Objektno Orijentisani PHP |
Dobrodošli, goste ( Prijava | Registracija )
Kratak uvod u OO PHP, Objektno Orijentisani PHP |
May 5 2009, 21:40
Poruka
#1
|
|
|
Ova tema sluzi kao kratak tutorijal Objektno Orijentisanog nacina programiranja u PHP-u.
Takodje svrha teme je da pomogne ljudima da shvate osnovne pojmove, kao i razliku u odnosu na obicno (proceduralno) programiranje. Na kraju cilj je da sto vise ljudi prihvati ovakav nacin programiranja, jer na kraju guramo vec skoro desetu godinu 21. veka Trudio sam se koliko sam mogao da sve bude na Srpskom, neke stvari se jako tesko ili skoro nikako prevode, ako neko ima nekih predloga nek slobodno iznese.. Uvod: Zasto OO? Zato! Razloga stvarno ima milion: - kod se lakse odrzava - kod sam sebe objasnjava (dobro dodje kad otvoris projekat od pre 2 godine) - veca kontrola nad kodom (videti 1.4) Postoji urbani mit da OO PHP usporava vase skripte, taj mit je delimicno istinit, ali je to "usporenje" toliko minorno da se u 99.99% slucajeva opusteno moze zanemariti. Sa druge strane benefit je ogroman. 1) Osnove i Pojmovi Za pocetak, posto ljudi stalno mesaju pojmove funkcija, klasa, metoda, objekt, varijabla, property.... Da malo objasnimo stvari 1.1 Klase -------------------------------------------------- Ovo je primer klase CODE Class Pas{ private $telefonVlasnika; public $ime; function podesiImePsa($ime){ $this->ime=$ime; } function podesiTelefonVlasnika($brojTelefona){ $this->telefonVlasnika=$brojTelefona; } function procitajTelefonVlasnika(){ return $this->telefonVlasnika; } function podesiRasu($rasaPsa){ $rasa='Rasa Podesena na: '.$rasaPsa; $this->rasa=$rasaPsa; return $rasa; } } 1.2 Objekti -------------------------------------------------- Klasa je samo nacrt, definicija kako objekat treba da izgleda. Da bi mogli da koristimo sam objekat moramo prvo da ga inicijalizujemo CODE $mojPas=new Pas(); $mojPas je objekt $mojPas je instanca klase Pas $mojPas nije klasa 1.3 Metode -------------------------------------------------- sada cemo podesiti ime i telefon vlasnika psa CODE $mojPas->podesiImePsa('Rex'); $mojPas->podesiTelefonVlasnika('+381 66 666 666'); podesiImePsa() i podesiTelefonVlasnika() su metode klase, ne funkcije iako ispred njih u definiciju klase stoji function 1.4 $this -------------------------------------------------- Jedna od najvecih prepreka pocetnicima pri ucenju prestavlja famozna $this pseudo-varijabla posto smo property ime i telefonVlasnika definisali van metoda da bi smo im pristupili unutar metode moramo staviti $this->ime takodje ako iz jedne metode pozivamo drugu, to isto radimo sa $this->nekaDrugaMetoda(); $this je najlakse shvatiti kao link ka metodama i propertijima objekta. takodje, u okviru metoda mozete definisati normalne varijable, za recimo privremene operacije CODE function podesiRasu($rasaPsa){ $rasa='Rasa Podesena na: '.$rasaPsa; $this->rasa=$rasaPsa; return $rasa; } $rasa i $this->rasa uopste nisu iste varijable. CODE echo $mojPas->podesiRasu('opak Pas'); // vraca: Rasa Podesena na: opak Pas echo '<br />'; echo $mojPas->rasa; // vraca: opak Pas takodje ne postoji nacin da pristupite lokalnoj (obicnoj varijabli) jednom kad se objekat inicijalizuje, osim da je vratite kroz return naprimer da smo imali jos jednu varijablu u okviru metode podesiRasu() recimo $proba='pboba'; kasnije ne bi smo mogli da mu pristupimo kroz inicijalizovan objekat. tj $mojPas->proba nece vratiti nista. 1.5 Object properties (ne znam kako se ovo prevodi u domacoj literaturi) -------------------------------------------------- $ime i $telefonVlasnika su properties, to mu dodje kao varijable u proceuralnom programiranju s tim da ovde imate vecu kontrolu. kontrola se odnosi na public - private svojstva propertija. primeticete da je ispred imena public a isred broja telefona private ako ispod ovoga ubacimo sledeci kod CODE echo $mojPas->ime; // ovo vraca Rex echo $mojPas->telefonVlasnika; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika to znaci da propertiju telefonVlasnika ne moze pristupiti direktno, vec samo preko metode koja vraca taj property takodje mozemo direkno menjati public propertije CODE $mojPas->ime='Rex Prvi'; echo $mojPas->ime; // ovo vraca Rex Prvi ako to isto pokusamo za telefonVlasnika CODE $mojPas->telefonVlasnika='+381 66 999 999'; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika da bi smo procitali property koji je private moramo napisati metodu koja ga vraca, u nasem slucaju to je procitajTelefonVlasnika(). CODE echo $mojPas->procitajTelefonVlasnika(); //vraca: +381 66 666 666 |
|
|
|
|
![]() |
Odgovori
Sep 6 2009, 19:18
Poruka
#2
|
|
|
Ima ih, nije da ih nema, ali su svi oni uzaludni ako ti u svojoj glavi ne skuzish prichu. Onda ide vrlo lako...
|
|
|
|
|
Poruke u ovoj temi
kodi Kratak uvod u OO PHP May 5 2009, 21:40
kodi Toliko za prviu lekciju
evo i cele skripte
CODE... May 5 2009, 21:44
stain evo dok kodi ne napishe evo malog tizera, u dve re... May 6 2009, 00:28
kodi @stain, premestio sam ti poruku iz one teme,
@ost... May 6 2009, 01:01
buger da li php podrzava dot notation ($this.telefo... May 8 2009, 19:34
kodi nema dot notation
mora $this->param
ili ... May 8 2009, 20:20
zlatiborac Poshto sam reshio da radim neki sajt(ove) iznova k... May 17 2009, 19:01
kodi eh, pogazio si prvi i najbitniji princip: razdvaja... May 17 2009, 20:07
kodi takodje svestan sam da ovo i nije bas najdirektnij... May 17 2009, 20:13
Milos Jankovic procitah ovo, ali i dalje ne shvatam koja je razli... Jun 19 2009, 23:50
r3d CITAT (Milos Jankovic @ Jun 20 2009, 00:5... Jun 20 2009, 05:23
kodi to sam stavio da pokazem da ako je property public... Jun 20 2009, 00:53
Milos Jankovic hvala vam puno, sad mi je jasno! skapirao sam ... Jun 20 2009, 12:16
kodi samo polako.. ako ima problema pitaj ovde.
takodje... Jun 20 2009, 12:22
r3d Klase sa loginom funkcionisu kao i bilo sta drugo ... Jun 20 2009, 15:52
miknik CITAT (r3d @ Jun 20 2009, 16:52) Klase sa... Mar 17 2013, 19:37
Milos Jankovic znam kako da napravim login skriptu... ja to radim... Jun 20 2009, 21:25
stain de nadje onaj tutorial
Iz svega ovoga shto pishes... Jun 20 2009, 23:19
Milos Jankovic ma tutorial sam izguglao uf, problem je sto ja sh... Jun 21 2009, 00:13
r3d CITAT (Milos Jankovic @ Jun 21 2009, 01:1... Jun 21 2009, 04:06
zlatiborac Stain-e iliti Mali Radojice kad si vec pomenuo ho... Jun 21 2009, 00:26
zlatiborac Staine aka Mali Radojice javiii seeeeeee Jun 23 2009, 12:59
kodi vi naravno znate da je WP sve osim OO?
ako cemo o... Jun 23 2009, 15:14
joes021 imam utisak da se kodi zeza sa vama.
Stalno je ne... Jun 23 2009, 16:23
kodi 2) Nasledjivanje
Nasledjivanje znaci da jedna kl... Jun 23 2009, 17:14
NVC Pozdrav Kodi. Pratim ovu temu i odlicno je sto se ... Jun 23 2009, 17:54
r3d Znaci da se ispred navodnika (' i ") stav... Jun 23 2009, 19:43
Dead Man Walking Postoji li neki dobar video tutorial na ovu temu k... Sep 6 2009, 13:24
Dead Man Walking Obično skidam Lynda.com tutoriale ali vidim da on... Sep 6 2009, 20:06
kodi pa nemoj da ti bude cudno, ovo i nije nesto sto se... Sep 7 2009, 00:23
jovbranko CITAT (Dead Man Walking @ Sep 6 2009, 21... Sep 7 2009, 08:18
ile tek sam sad ovo vidio... kodi, majstore, svaka cas... Sep 8 2009, 12:15
zlatiborac Ma Kodi je chudo, samo ga stici e to je malo teze.... Sep 8 2009, 16:17
ile CITAT (kodi @ May 5 2009, 22:40) 1.5 Obje... Sep 8 2009, 23:07
zlatiborac Ile, sunce mu zarko, znash da se St. Kodi ne ispra... Sep 9 2009, 11:08
kodi e al' nazalost, properties nisu bukvalno ... Sep 9 2009, 15:19
ile CITAT (kodi @ Sep 9 2009, 16:19)
e al... Sep 9 2009, 18:18
zlatiborac Haj' se dogovorite, zbunjujete pochetnike samo... Sep 10 2009, 11:13
jovbranko Mislim da nepotrebno komplikujete stvari... Proper... Sep 11 2009, 02:08
Dead Man Walking Gledam ovaj php&mysql beyond the basics i ubi ... Sep 23 2009, 07:07
joes021 To smeta i ovima koji antiprotiv parade.
Lepo lju... Sep 23 2009, 16:28
Dead Man Walking Nisam protiv nikakve parade ali me iritira kad nek... Sep 23 2009, 19:30
jovbranko ^
Pa ti ga nemoj gledati, nije Lynda jedina koja ... Sep 23 2009, 22:57
webarto Dobro pojašnjeno. May 17 2010, 14:54
webarto @kodi, što se tiče ovog template enginea, je li ... Dec 18 2010, 12:45
kodi ne postoji ni jedna moguca prednost
a mana ima mi... Dec 18 2010, 18:41
webarto Ma da, u tome je i čitava poenta. Vidjao sam mnog... Dec 18 2010, 20:57
kodi Hmmmm
Prihvatam da je ovo ok, i da moze da bude k... Dec 19 2010, 03:13
webarto Pa da tu je to, onda manje-više stvar navike
Ja ... Dec 19 2010, 03:26
Dead Man Walking Gde ide html forma u MVC modelu?
Bacio sam se na ... Jan 6 2011, 01:33
webarto Pa ide u View AJAX? Array sa greškama? Jan 6 2011, 01:54
Dead Man Walking Ne znam kako da napravim formu koja u sebi neće i... Jan 6 2011, 02:02
webarto Pa u view ne bi trebao imati ništa više od echo ... Jan 6 2011, 02:17
Dead Man Walking A kako rešavam warninge pre nego što submitujem ... Jan 6 2011, 09:58
webarto U kojem FW radiš? Jan 6 2011, 10:11
Dead Man Walking Hteo sam ovo da napravim custom jer često radim n... Jan 8 2011, 17:04
webarto Znam, ali te pitam, problem je bez uvrede što jo... Jan 8 2011, 17:53
zlatiborac CI se sprema za major shuffle tako da ce se josh ... Jan 8 2011, 19:34
Dead Man Walking Odustao sam od načina na koji sam hteo da uradim ... Jan 8 2011, 21:13
webarto Pa radi proceduralno, nije sramota, bitno je da je... Jan 8 2011, 22:03
Dead Man Walking Hteo sam baš objektno da skontam i odgledao sam d... Jan 8 2011, 22:07
webarto To što si ti htio napisati je više helper klasa,... Jan 9 2011, 08:50
zlatiborac More gledate do sutra ali taj ahaaaa momenat nece ... Jan 9 2011, 11:15
webarto Naravno, ne bih da s* ali ja nikad nisam išao po ... Jan 9 2011, 11:46
Mechanic Kako vam se čini ovaj template engine?
http://ww... Sep 9 2012, 16:33
xiper Ne zelim da spamujem al napalio sam se na ovu temu... Dec 25 2012, 15:53
miknik bravo majstore kodi odlichno pojashnjen OOP Mar 17 2013, 01:58
miknik Nisam primetio da je neko rekao,kako je mnooogoo l... Mar 17 2013, 19:49![]() ![]() |
| Lo-fi verzija | Trenutno vreme: Wednesday 22. May 2013 - 14:37 |