Poslao: 23 Maj 2013 19:08
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- Gde živiš: Majur (Colosseum)
|
Peca ::e sad - kad si negde van objekta, prvo kreiraš objekat sa:
$objekat = new neka_klasa();
Mislis, kad si negde van klase ?
BTW: Hvala obojici na objasnjenju, nisam jos stigao do static funkcije ali mi je sad jasna posto ste mi objasnil.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 23 Maj 2013 20:33
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
m4rk0 ::Pretpostavljam da se pokazivac $this-> koristi za pristupanje atributu ili operaciji unutar klase, a -> se koristi za pristupanje atributu ili operaciji izvan klase ?
$this kao sto si i sam rekao, upucuje na tekuci objekat. Pomocu modifikatora pristupa zadaje se da li ce odredjenom atributu/metodi moci da se pristupa iz spoljasnjeg okruzenja objekta.
Obicno se preporucuje da kodu izvan klase bude dozvoljen direktan pristup atributima. Jedna od prednosti sto ja mislim u objekno orjenitsanog razvoja jeste ta sto podstice kapsuliranje, koje se moze obezbediti pomocu funkcija __get ili __set.
Itd, itd, itd bla bla bla
|
|
|
|
Poslao: 23 Maj 2013 20:47
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- Gde živiš: Majur (Colosseum)
|
_iKaC ::Obicno se preporucuje da kodu izvan klase bude dozvoljen direktan pristup atributima. Jedna od prednosti sto ja mislim u objekno orjenitsanog razvoja jeste ta sto podstice kapsuliranje, koje se moze obezbediti pomocu funkcija __get ili __set
Zar nije obrnuto ? Da se ne preporucuje da kodu izvan klase bude dozovljen direktan pristup atributima ?
|
|
|
|
|
Poslao: 23 Maj 2013 21:39
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
Da ali da nezaboravimo da imamo i modifikatore pristupa.
Jer modifikatori pristupa odredjuju vidljivost atributa metoda i klasa.
Podrazumevana opcija je public "Javni" sto znaci da je pristup javni ako uz atribut ili metode ne zadam nijedan modifikator pristupa. Elementima klase koje deklarisemo kao javne moze pristupiti i kod unutar klase i kod izvan klase.
Elementu oznacenom modifikatorom pristupa private "privatni" moze pristupiti samo kod koji se nalazi unutar klase. Sve private metode nemogu biti nasledjene a nemoze se pristupiti izvan klase...
Tako bar kaze php man, ali opet kada sve ovo probam u primerima to je ziva istina.
|
|
|
|
Poslao: 23 Maj 2013 22:02
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
Sve je to naravno istina - reč je samo o 'stilu' ili navici programiranja.
Lično ne bih voleo da nešto sa strane menja promenljive u mom objektu, jer ću lakše kontrolisati stvari unutar objekta ako se za sve pita sami objekat.
Primer - klasu A je pisao Pera.
Da bi znao smeš li public promenljive da menjaš tek tako - morao bi prvo celu klasu da pročešljaš, pa da vidiš da li bi izmena imala neke nepredvidive konsekvence.
(a on je recimo tu promenljivu stavio da bude public da bi samo mogli da je čitamo)
A ako je Pera napravio funkciju set_nešto() onda sa popriličnom sigurnošću znaš da je ta funkcija i predviđena za izmenu promenljive, i da će ona automatski da se pobrine da ta izmena bude korektno izvedena i sinhronizovana sa drugim promemnljivama.
A razmišljaj malo i na duže staze - sajt postane ogroman - mora da ide na više servera - pa klasa A mora preko socketa da komunicira sa klasom B.
Ako si za interakciju između klasa koristio neku funkciju iz klase, kao recimo set_nešto(), sve što treba je da nju 'prešteluješ' da radi kroz socket.
U proitivnom, da si na 200 mesta koristio $b->promenljiva='nešto'; tražio bi kanapče da se besiš
|
|
|
|
Poslao: 23 Maj 2013 22:47
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
A jeste tako mozemo mi da tupimo 3 dana ali surova istina.
Sve je to 1000 zasto 1000 zato.
|
|
|
|
Poslao: 24 Maj 2013 11:07
|
offline
- Pridružio: 07 Maj 2013
- Poruke: 33
|
_iKaC hvala puno, mada i dalje nemogu sebi da objasnim zasto nema nigde u tutorijalima ovo...
|
|
|
|
Poslao: 24 Maj 2013 13:06
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
To je Objektno Orjentisano Programiranje u PHP-u. Da bi razuemo OOP moras da imas iskustva u php-u. Ako planiras da se bavis programiranjem prelistaj ceo php man i sama dokumentacija ce te dovesti do Class.
Ako nisi radio do sada sa klasama neces ni razumeti tvoj problem.
Samo praksa, praksa i pisanje testova. Testovi su na prvom mestu. Za svaku funkciju pisi unit testove da bi dobio svoj kod do savrsenstva i funkcionalnosti. I uvek prikazuj testove da ostali programeri i korisnici vide.
|
|
|
|
Poslao: 24 Maj 2013 13:11
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- Gde živiš: Majur (Colosseum)
|
U knjizi iz koje ucim je nakon osnova php-a, a pre lekcija o mysql-u, ubaceno oop. Da li je greska u tajmingu sto sam u ovom trenutku poceo da ucim oop, ili je trebalo da usavrsim php i jos dodam mysql pa tek onda da predjem na oop ?
|
|
|
|