Poslao: 23 Maj 2013 09:01
|
offline
- Pridružio: 07 Maj 2013
- Poruke: 33
|
Pozdrav, kad radim sa nekim gotovim scriptama ako je npr. nadogradnja itd... uglavnom su to sitnice jer nisam profi, ali cesto vidim npr: users::getMail($value[1]) , zanima me sta znaci "::", trazio sam po mnogim php tutorijalima ali nista nisam nasao da to objasnjava...
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
|
|
Poslao: 23 Maj 2013 11:26
|
offline
- FoxVanis
- Ugledni građanin
- Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
- Pridružio: 13 Jun 2010
- Poruke: 307
- Gde živiš: Subotica
|
Ja volim reći: "Napredno rešenje za zbunjivanje programera"
To su ti metode za klase. Kao na linkovima iznad. Napredno programiranje u klasama koje ja lično ne volim zbog komplikacije petlji ali sve češće primenjujem. Moćna je stvar ako radiš na velikim CMS sistemima jer se lako povezuje sa modulima i komponentama.
|
|
|
|
Poslao: 23 Maj 2013 14:55
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
Oho hvala bogu da dodje neko ko se raspituje za OOP.
Sad cu da ti docaram kako to funkcionise.
Upitanju su staticke metode (static)
users::getMail($value[1])
Sto znaci = <class> ( :: ) <method> (<param>, <argc> )
Kod iznad koji si postavio ispod haube izgleda ovako:
Users, users je klasa koja ima imetodu getMail a ta metoda ima parametar neke vrednosti tipa array.
class Users {
public $value = array();
/*
* Constructor
*/
public function __construct() {
Log::message('debug', 'Users class initialized.';
}
/*
* Get user mail
*/
public static function getMail($value) {
if(is_array($value)):
self::$value = $value;
foreach(self::$value as $key => $val) :
// Do somthing
endForeach;
endIf;
}
}
Ovo iznad je primer cisto da vidis kako to radi ispod haube, sve staticke metode se pozivaju
Users :: getMail();
Ako nije staticka metoda imas slucajeva da se pozivaju da prvo moras da napravis instancu pa tek da pozivas metodu.
$user = new Users() ;
$user -> getMail('userID');
Ako budes radio OOP neces mocu da miksujes u metodama $this->doSomthing sa self::$doSOmthing;.
Ako tako nesto zelis da uradis koristis Factory pattern: Evo ti primer
class Factory {
public static $userFactory = null;
public static function getUserInstance() {
if(isset(self::static)):
self::$userFactory = new static;
endIf;
return self::static;
}
}
Kao output bi dobio sledece slicno Zend Frameworku ili Joomla platformi:
// Init app
$application = Factory::getInstance();
//sa $application sada mozes da pristupas svim ostalim navedenim klasama tipa:
$application::getDatabaseDriver()->setDriver('mysql');
// U tvom slucaju bi mogao da radis ovako:
Factory::getUserInstance()->getMail('userID');
ili
$application::getConfig->databaseUsername;
// Sto je isto kao i
Factory::getConfig->databaseUsername;
Factory je jedan jako mocan pattern.
Ako te bude bilo sta jos zanimalo za OOP javi se u svako doba cu pomoci koliko god mogu ako je upitanju OOP i ostalo sve sto je vezano za oop. Ostale kodove koji nisu oop nezelim ni da gledam.
|
|
|
|
Poslao: 23 Maj 2013 18:15
|
offline
- m4rk0
- Administrator
- Administrator tech foruma
- Marko Vasić
- Gladijator - Maximus Decimus Meridius
- Pridružio: 14 Jan 2005
- Poruke: 15766
- Gde živiš: Majur (Colosseum)
|
Pretpostavljam da se pokazivac $this-> koristi za pristupanje atributu ili operaciji unutar klase, a -> se koristi za pristupanje atributu ili operaciji izvan klase ?
|
|
|
|
Poslao: 23 Maj 2013 18:46
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
tako je
|
|
|
|
|
Poslao: 23 Maj 2013 18:58
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
Napisano: 23 Maj 2013 18:52
odnosno, da preformulišem svoj odgovor.
kada je reč o kodu koji se nalazi unutar klase, u tom kodu sve iz objekta pozivaš sa this->
e sad - kad si negde van objekta, prvo kreiraš objekat sa:
$objekat = new neka_klasa();
pa onda svemu što je unutar objekta pristupaš sa:
$objekat->
za static funkcije je drugačija priča, odgovorio već Rasta
Dopuna: 23 Maj 2013 18:58
da razjasnim za static funkcije.
prednost je što se te static funkcije mogu koristiti i bez kreiranja objekta.
unutar klase pristupaš drugim static promenljivama i funkcijama sa self::
van klase sa neka_klasa::
|
|
|
|