Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP i design patterni

[es] :: PHP :: PHP i design patterni

[ Pregleda: 2890 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon PHP i design patterni29.05.2010. u 13:49 - pre 169 meseci
Postavljam ovo pitanje po cenu da ispadnem bas pglu :)
Ako PHP objekti zive samo u toku jednog serverskog zahteva, nije mi jasno ima li neke vajde koristiti creational design pattern-e tipa singleton, factory... razumem da meni ima koristi kao developeru da postignem razdvoenost koda, odvojim objekte, ali ima li ovo nekog uticaja na izvrsavanje PHP skripti. Jbg radio sam samo sa .NET framework-om sada mi malo nije jasno kako radi nesto sto nije managed code i jos se interpretira :(
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
178.22.216.*



+34 Profil

icon Re: PHP i design patterni29.05.2010. u 15:01 - pre 169 meseci
Imas solidnu dokumentaciju na ovom sajtu. Koristim sve osim factory. Naravno; citljivost i mnogo laksi upgrade jednog dana.

Ako si nov u php-u, mogu ti preporuciti Doctrine za ORM. Realno, trebace ti 3-6 dana da ga savladas, ali vredi.


[Ovu poruku je menjao Goran Rakić dana 23.06.2010. u 21:54 GMT+1]
 
Odgovor na temu

milosijaa
Milos djordjevic
PHP Developer
srbija

Član broj: 88371
Poruke: 135
*.dynamic.sbb.rs.



Profil

icon Re: PHP i design patterni05.06.2010. u 12:53 - pre 169 meseci
Naravno da ima smisla... Ako jos ne vidis zasto... verovatno nisi imao prilike da radis sa "dovoljno komplikovanim" kodom ili problemu gde se prirodno namece neki Design pattern. (Siguran sam da niko ne zeli da kreira 2 ili vise konekcije ka istoj bazi u jednom zahtevu "Singletone pattern").

Kako je ova prica vrlo usko povezana sa OOP-om, moj savet ti je da proucis odgovarajucu literaturu i da naravno sto vise primenjujes OOP.

Vremenom ce ti se samo kasti.....





 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP i design patterni23.06.2010. u 20:53 - pre 168 meseci
Singleton je zamena za global ključnu reč. U veb programiranju se dosta koristi MVC, FrontController, DAO i ORM. Razne Decorator i Commander varijante.

Da, podrazumevano jeste da se objekti inicijalizuju pri svakom zahtevu ali tvoja aplikacija uglavnom ima stanje koje prenosiš tako da se između dva vezana zahteva doći promena u njihovom stanju i onda opet mogu da pevaju svoju pesmicu i dobacuju se porukama međusobno. Možeš i cele objekte da pamtiš u $_SESSION ili neki drugi način.

Na kraju, video sam i jedno rešenje gde je postojao server napisan u PHP-u koji se vrti stalno, i PHP klijent kroz Apache koji primi HTTP zahtev, zakači se i izvrši interakciju sa objektima unutar servera i prikaže stranicu.

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
178.22.216.*



+34 Profil

icon Re: PHP i design patterni24.06.2010. u 13:16 - pre 168 meseci
Citat:
Goran Rakić: Singleton je zamena za global ključnu reč.

Global je za sabane , singleton je nesto drugo, evo ti dobar primer:
http://www.talkphp.com/advance...-singleton-design-pattern.html
Citat:

Da, podrazumevano jeste da se objekti inicijalizuju pri svakom zahtevu ali tvoja aplikacija uglavnom ima stanje koje prenosiš tako da se između dva vezana zahteva doći promena u njihovom stanju i onda opet mogu da pevaju svoju pesmicu i dobacuju se porukama međusobno. Možeš i cele objekte da pamtiš u $_SESSION ili neki drugi način.

Nikako! Zasto bi cuvao objekat u $_SESSION-u? PHP bi konstantno vukao gomilu serijalizovanih objekata, i kad mu treba i kad mu ne treba. Potpuno bespotrebno arcenje resursa, a ne smem ni da zamislim sta bi se desilo da uradi print_r ($_SESSION['objekat'])
Citat:

Na kraju, video sam i jedno rešenje gde je postojao server napisan u PHP-u koji se vrti stalno, i PHP klijent kroz Apache koji primi HTTP zahtev, zakači se i izvrši interakciju sa objektima unutar servera i prikaže stranicu.

mmm... ovo deluje interesantno. Imas neki link, cisto da vidim o cemu se radi?
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon Re: PHP i design patterni24.06.2010. u 13:57 - pre 168 meseci
Hocu malo da obrnem pitanje. Zasto koristite pattern-e u PHP-u?
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP i design patterni24.06.2010. u 14:36 - pre 168 meseci
Željko, jedino po čemu se global i singleton razlikuju je što globalna promenljiva ne može sama sebe da inicijalizuje. Pozivanje singletona izlazi u globalni prostor gde je ta skrivena statička instanca da dovuče objekat i to iz bilo kog konteksta baš kao što to radi global/superglobal. U vezi $_SESSION, ako imaš „business-like“ veb aplikaciju, njoj i trebaju ti objekti pri svakom zahtevu jer to predstavlja stanje aplikacije, a tekući zahtev je samo novi event. Za stateless veb sajtove model je drugačiji, naravno. Nemam link, interno rešenje ali zgodna ilustracija da PHP ne mora biti ni stateless niti objekti moraju biti kratkoročni.


Nazad na temu, lakše je dokumentovati gotov obrazac u kodu.

Ako programer ispravno primenjuje OOP tehnike, gotovi obrasci se i sami pojave u kodu. Ne volim da ih koristim kao stroge šablone od kojih se počinje nego kolekciju zgodnih ideja koje treba imati u vidu. Ja ih doživljavam kao neobaveznu opštu kulturu, dok čitaš novi kod kažeš: „a ha, evo ga to-i-to“ ili „heh, ovo liči na ono-i-ono“, i nastaviš dalje kroz kod sa većim samopouzdanjem.

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
178.22.216.*



+34 Profil

icon Re: PHP i design patterni24.06.2010. u 23:52 - pre 168 meseci
Citat:
U vezi $_SESSION, ako imaš „business-like“ veb aplikaciju, njoj i trebaju ti objekti pri svakom zahtevu jer to predstavlja stanje aplikacije, a tekući zahtev je samo novi event.

U realnom svetu, tebi zaista nikad nece trebati da u bas svakom trenutku imas instancu 'neke' klase, osim eventualno konekcije ka bazi. Instanca 'necega' se uzima tek kad treba.

Citat:
Valerij Zajcev: Hocu malo da obrnem pitanje. Zasto koristite pattern-e u PHP-u?

Olaksava posao.
Imas gomilu dokumentacije na netu, probaj nesto tipa 'oop best practices' ili slicno.


[Ovu poruku je menjao mitke013 dana 25.06.2010. u 14:01 GMT+1]

[Ovu poruku je menjao Goran Rakić dana 25.06.2010. u 15:33 GMT+1]
 
Odgovor na temu

_korso_

Član broj: 82797
Poruke: 163
*.adsl-a-3.sezampro.rs.



+1 Profil

icon Re: PHP i design patterni25.06.2010. u 11:57 - pre 168 meseci
"Silver bullet" ne postoji. Pa tako ni design patterni nisu svemoguci, kao sto i ako pises phpunit testove nisi imun na bugove... sto znaci da aplikacija ti nece raditi sama od sebe "ocekivano" ako pises i koristis iste.

Ja mislim i potpuno se slazem sta je @Goran Rakic napisao u poslednjem njegovom postu. Jedno je biznis-like RIA aplikacija, a drugo je stateless sajt ili aplikacija tipa wordpress i joomla.
Ne znam kako je kod drugih, ali kada pocinjem nesto da pisem, ne mogu da uvek znam, da li da koristim ovaj ili onaj pattern.
Ukoliko taj deo koda koristis vise puta, sa razlicitih mesta u aplikaciji, onda ides lepo refractor, pa vidis sta ti ima najvise smisla, da li ces da koristis ili ovaj ili onaj, ili neku varijaciju na temu.

Sam Martin Fowler, je rekao, da on skoro nikada ne koristi design pattern-e na isti nacin u svakoj aplikaciji, vec odradi neki "hack" ovde i onde. Ovo je samo parafrazirano.

Takodje, ako samo koriscenje design pattern-a , kao sto ti kazes omogucava vise para da zaradis, bilo bi lepo da to podelis sa namo, ukoliko zelis taj svoj design pattern.


[Ovu poruku je menjao Goran Rakić dana 25.06.2010. u 15:30 GMT+1]
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon Re: PHP i design patterni02.07.2010. u 20:33 - pre 168 meseci
Ja se izvinjavam mozda sam malo naporan ali mislim da sam konacno formulisao sta sam hteo da pitam.
Citat:

Singleton in php doesn't responded like java (or others), the static instance resets on every request......

Ako se static instance klase koja treba da bude singleton pri svakom request-u resetuje, to znaci (IMO) da svaki put kada pozovem tu klasu ja pravim novu instancu te klase.
Kako to onda moze da bude singleton?
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP i design patterni02.07.2010. u 21:40 - pre 168 meseci
Request je u toj rečenici HTTP request (implicitno se podrazumeva da se radi o veb aplikaciji u PHP-u), a ne poziv klase/metode.

Da, PHP ne čuva stanje između dva HTTP poziva jer HTTP je stateless protokol, ne verujem ni da je sa ASP.Net-om nešto drugačije. Skripta se pri svakom pozivu od strane veb servera iznova izvršava u novom memorijskom prostoru, kao dva odvojena "programa". Unutar jednog izvršavanja možeš imati objekte, statičke i globalne promenljive (pa i potpuno regularne singletone) i to sve radi kako se očekuje.

Code (php):
class Example {

    private static $instance;

    private function __construct() {}

    public static function singleton()  {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        return self::$instance;
    }

    private $foo;
    public function setFoo($foo) { $this->foo = $foo; }
    public function getFoo() { return $this->foo; }
}

$a = Example::singleton();
$b = Example::singleton();

$a->setFoo("bar");
echo $b->getFoo();


Promenljive $a i $b ukazuju na istu insancu klase Example, i poslednji red će ispisati "bar".

Međutim ako pri ponovnom pokretanju ove skripte kroz novi HTTP zahtev ponovo pozovem Example::singleton() ovo će biti izvršeno u novom memorijskom prostoru tu nema one instance "od malopre" sa parametrom foo="bar". Ako to želim (a ima razloga i za i protiv zašto to /ne/ treba raditi), moram ručno da sačuvam objekat u nekoj deljenoj memoriji između dva HTTP zahteva.

Ako koristiš PHP za pisanje standalone aplikacija (konzola, gui) onda je tvoja skripta jedan proces tokom celog izvršavanja sa svojim memorijskim prostorom.

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

urukhai
Sreten Antić

Član broj: 155017
Poruke: 16
*.dynamic.sbb.rs.



+1 Profil

icon Re: PHP i design patterni04.07.2010. u 12:12 - pre 168 meseci
He he he, dobra tema...
Pre php-a sam nekoliko godina radio web aplikacije u javi i onda sam presao na php. Odmah sam krenuo da radim objektno u njemu,
ali sam se dosta nervirao bas zbog postojanosti objekata samo na nivou requesta. Naravno, u tim trenucima nisam bio upoznat sa tim
koji cms-ovi, framework-ovi postoje pisani u php. Vremenom kako su projekti na kojima sam radio postajali složeniji počeo sam da uvidjam
mesta na kojima bi bas legla primena paterna. Što zbog čuvanja resursa koje aplikacija koristi ili zbog optimizacije i čitljivosti koda, a da ne kažem
to što primenom određenih paterna olakšavaš skalabilnost same aplikacije.
 
Odgovor na temu

[es] :: PHP :: PHP i design patterni

[ Pregleda: 2890 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.