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

ZF - Problemi i diskusija

[es] :: PHP :: ZF - Problemi i diskusija

Strane: < .. 1 2 3 4 5 6 7 8 9 ... Dalje > >>

[ Pregleda: 33984 | Odgovora: 229 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.3.nat.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija11.06.2010. u 10:48 - pre 168 meseci
Kao sto rece Nikola, izgubio bi puno a dobio malo (nista?). Licno, u ZF-u nikad nisam menjao V deo, a i ne vidim razloga da bih menjao - jednostavno, komponenta je prejaka. A i ne moras da "switch"ujes razmisljanje izmedju smarty i php sintakse :)
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-7.sezampro.rs.



Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 02:06 - pre 168 meseci
Ok, necu petljati sa smarty posto mi i sam zend postaje konfuzan. Naime procitah par tutova i sad pojma nemam gde sam. :) Izgleda da svi imaju neki svoj princip, menjaju standardan raspored foldera... ja krenem tako kontajuci (a i izgleda) da je jednostavnije.. i na kraju vidim da nije.
Uglavnom jasno mi je ono osnovno. Napravio sam par akcija za citanje, prikaz, editovanje i upis (prateci ovo - pdf). Radi fino i logicno, samo sto je objekat nenormalno veliki (bar meni tako izgleda) i treba prilicno vremena za jednostavne operacije. Valjda ce se ispeglati kasnije sa kesiranjem...

Nego, treba da imam admin panel, dakle kako kontam dva modula. Public (default) i admin. Krenuo sam prema ovom tutorialu ali kako god ja da dodam novi modul, kreiram sve isto kao kod postojeceg sa nekim razlikama... nece! Greska - ne moze da nadje potreban kontroler. Znam gde treba da ga trazi i stvarno se tamo nalazi, ali ipak nece.
Moguce da sam prevideo nesto, mozda ga ne pozivam kako treba, a mozda ni tut nije dobar.

Ako neko od iskusnih moze da baci pogled na pomenuti tut (part1, part2) cisto da vidi jel ok nacin kako se radi, ako nije ili to moze bolje da me uputi... neki link, smernica.. Ako je ovo dobro, onda da se patim dok ne pronadjem gde je caka.

Tnx i pozz. :)
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.static.kdsinter.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 07:16 - pre 168 meseci
Whoa, ovi ga bas promenise. Zasto bi neko menjao defaultnu strukturu, tj. onu koju kao preporucuju, ne'am pojma. Pogotovo sto ovi primeri unutar APP_PATH-a imaju 2 foldera library. Osudjeno na konfuziju do kraja zivota :)

Uglavnom, ja se drzim one osnovne strukture foldera, i za mene je ona sasvim OK.

Eo "moje" strukture za sa modulima.

Code:

application
    - configs
        - app.ini
    - layouts
        - default.phtml
    - modules
      - blog
        - controllers
        - forms
        - models
            - resources
        - views
            - helpers
            - scripts
    - Bootstrap.php
library
    - MyApp
    - Zend
public
    - index.php


E sad, ako radis sa modulima, u app.ini-ju moras reci koji je defaultni modul (recimo imas public i admin, public je default):

Code:

resources.frontcontroller.defaultmodule = "public"


Vodi racuna da klase koje *nisu* u default modulu, moraju da budu prefiksirane sa nazivom modula. Npr, IndexController u admin modulu:

Code:

file: app/modules/admin/controllers/IndexController.php
class: Admin_IndexController extends ...


Nadam se da sam smanjio konfuziju ;)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 09:18 - pre 168 meseci
Takođe, pošto će tvoji dodatni moduli verovatno imati svoje Bootstrap klase, a i one moraju da budu izvršene u bootstrap procesu, u tvom konfiguracionom fajlu bi trebao da "kažeš" da hoćeš da se pri bootstrap procesu izvršava i resurs za bootstrap-ovanje dodantnih modula. Taj app resurs se zove "Modules" (logično ), i da bi ga uključio u bootstrap proces, dovoljno je da dodaš ovu liniju koda u tvoj konfiguracioni fajl:
Code:
resources.modules = ''

Pored ovoga što je Robert spomenuo, u vezi set-ovanja default modula, a što inače treba da radiš samo u slučaju da ti se podrazumevani modul NE zove "default", trebao bi i da podesiš putanje do direktorijuma u kojima se nalaze kontroleri. U zavisnosti od toga da li si se odlučio za strukturu direktorijuma u kome se resursi (kontroleri, modeli, view-ovi, itd.) default modula nalaze unutar samog "app" foldera, i u kome se onda nalazi i direktorijum "modules", ili su svi moduli unutar pomenutog "modules" foldera, u tvom konfiguracionom fajlu bi treba da imaš ove linije koda:
Za prvi slučaj:
Code:
resources.frontcontroller.controllerDirectory = 'putanja/do/kontrolera/default/modula'
resources.frontcontroller.moduleDirectory = 'putanja/do/modules/foldera'

A za drugi slučaj:
Code:
resources.frontcontroller.defaultmodule = "public" ;ako ti se tako zove podrazumevani modul
resources.frontcontroller.moduleDirectory = 'putanja/do/modules/foldera'

 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.static.kdsinter.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 09:39 - pre 168 meseci
Citat:
Nikola Poša:
Code:
resources.modules = ''



Ovo cini mi se treba da bude

Code:

resources.modules[] = ''
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 14:05 - pre 168 meseci
A što? Doduše, ja obično taj glavni konfiguracioni fajl čuvam u .php formatu, ne koristim .ini, i onda je notacija ona klasična PHP-ovska, pa tako taj deo sa definisanjem app resursa izgleda npr. ovako:
Code:
'resources' => array(
    'modules' => '',    
    'translate' => array(
        'adapter' => 'Array',
        'data'       => APPLICATION_PATH . '/configs/langs',
        'options' => array(
            'scan' => 'filename'
        )
    ),
    'frontController' => array(
        'controllerDirectory' => APPLICATION_PATH . '/controllers',
        'moduleDirectory'       => APPLICATION_PATH . '/modules'
    ),
    'view' => array(
        'doctype'=>'XHTML1_TRANSITIONAL',
        'helperPath' => array('ZendX_JQuery_View_Helper' => 'ZendX/JQuery/View/Helper')
    ),
    'cachemanager' => array(
        'default'=>array(
            'frontend'=>array(
                'options'=>array('lifetime' => null)
            ),
            'backend'=>array(
                'options'=>array('cache_dir' => BASE_PATH . '/data/tmp/cache')
            )
        )
    )
)

Zato sam i napisao samo resources.modules, misleći da je u slučaju .ini fajlova slična notacija. A i ako pogledaš u kod klase Zend_Application_Bootstrap_BootstrapAbstract, pa pri dnu metoda setOptions(), videćeš da kad stigne do tog dela za registrovanje resursa, odnosno kad stigne do tog elementa konfiguracionog niza sa indeksom 'resources' - elseif ('resources' == $key), u toj petlji ispod će da "oblilazi" sve resurse u formi ime resursa i njegove opcije. Ta dva parametra će se prosleđivati registerPluginResource() funkciji, a ona kao prvi argument prihvata ili string ili Zend_Application_Resource_Resource. E ja sad stvarno ne znam kako će izgledati taj niz nakon parsiranja .ini fajla, tačnije, kakav bi efekat imalo to "[]" pored "modules". A i za app resurs "Modules" ne postoje nikakve dodatne opcije, i zato u toj notaciji u konfiguracionom fajlu stoji prazan string (resources.modules = '').
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.mbb.telenor.rs.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 16:50 - pre 168 meseci
Hm, ocigledno sam ja nesto pobrkao. Znam da je jedno vreme zahtevalo da bude [] na kraju da autoloader za module radi kako treba, ali to je mozda jos iz doba 1.8 verzije, a meni je ostalo ovako u glavi. Anyways, radi i ovako i onako :)

*posle 10 minuta guglanja*

A-ha! Odavde mi to sa uglastim zagradama: http://akrabat.com/zend-framew...otstrapping-modules-in-zf-1-8/
Al izgleda da je to da se model iz jednog modula moze instancirati u drugom modulu. Eto, mystery solved :) kazem ja da je vezano za 1.8 :)
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-4.sezampro.yu.



Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 17:30 - pre 168 meseci
Pa da, minut-dva koliko mi je trebalo da kreiram foldere i izmenim ini, kontroler.. i to je to. Radi super! :)
Kontao sam da to nije toliko komplikovano kako izgleda u onih par tutova. Zasto li ljudi zakomplikuju kada moze jednostavnije...

Odlicno ste objasnili. Hvala puno. :)

Nego, za sada nemam nista u bootstrap, a nista nisam imao od samog pocetka... pa nisam siguran sto posto cemu to tacno sluzi - za sta i kada se koristi? Mislim na bootstrap u folderu application jer sad tog fajla nema u folderima "admin", "public" i "modules" (tako nesto) kao sto je bilo prema onom tutu iznad.
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.mbb.telenor.rs.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 18:01 - pre 168 meseci
Bootstraping je proces inicijalizovanja sistema - on se prvo izvrsava. U application folderu je on neophodan. Taj bootstrap inicijalizuje neke stvari koje su vezane za sve delove aplikacije. Bootstrap na nivou modula nije neophodan. Tu mozes da izvrsis inicijalizaciju odredjenog modula, nakon sto se inicijalizuje ceo sistem.

To sto je tebi trenutno bootstrap prazan, to ne znaci da on ne radi nista, ili da ce stalno ostati prazan.

Postoje neki ugradjeni resursi koje ZF automatski bootstrapuje, kao sto je FrontController ili sesija. Ostali najcesci su baza i layout.

Ja licno najcesce sam bootstrapujem dodatne stavke za autoloader i neka podesavanja za Zend_View.

Stvari koje zelimo da sami inicijalizujemo se definisu kao metode unutar tih Bootstrap klasa. Svaka metoda koja pocinje sa _init bice izvrsena automatski. Redosled izvrsavanja je sledeci:
- prvo se izvrsavaju nase custom _init metode, top to bottom, tj. onim redom kojim se nalaze u Bootstrap klasi, iduci od pocetka klase prema kraju.
- na kraju se izvrsavaju te automagicne ugradjene metode.

Evo jedan primer inicijalizovanja Z_V-a:

Code (php):

    public function _initViewHelpers()
    {
        // view nam zavisi od layout-a
        // a kako se layout sam inicijalizuje na samom kraju, moramo ZF-u reci da ga inicijalizuje
        // pre reda. To govorimo sa sledecom linijom:
        $this->bootstrap('layout');
        // svaka _init metoda koja return-uje nesto, nam je dostupno preko $this->getResource(ime_resursa);
        // tako recimo mozemo uzeti inicijalizovani layout resurs:
        $this->_layout = $this->getResource('layout');
        // iz layout-a uzmemo view
        $this->_view = $this->_layout->getView();

        // na view-u postavimo recimo doctype
        $this->_view->doctype('XHTML1_STRICT');
        // neke meta tagove
        $this->_view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8');
        // postavimo glavni naslov sajta
        $this->_view->headTitle('Moj super fensi sajt u ZF-u');
        // itd..
        $this->_view->headTitle()->setSeparator(' / ');
    }
 


Na ovaj nacin smo dobili da ce na celom sajtu (ako ne pregazimo negde dalje, jel), doctype biti XHTML1 strict, uvek cemo imati content-type podesen, kao i neki glavni naslov sajta...

Ja sam ovu funkciju nazvao _initViewHelpers - bitno je samo da pocinje sa _init, sto se tice ZF-a, moglo je biti i _initSkuvajMiKafu - pocinje sa _init, skuvace mi kafu :)

Na kraju: bootstrap je mocan i moze puno toga da odradi, ima dosta delova sa kojima ni ja jos nisam nacisto. Pretumbaj dokumentaciju za detaljnije :)

Obrati paznju da tokom bootstrapovanja, ti jos ne mozes znati recimo koji je modul ili koja akcija kog kontrolera pozvana - u toku inicijalizovanja sistema, ZF to jos nije odredio.

Edit: malo razumljivije u return-ovanju resursa (lakse mi je preko koda nego recima :D):

Code (php):


public function _initNekaInitMetoda()
{
    return "Nesto";
}

public function _initNekaDrugaInitMetoda()
{
    $resurs = $this->getResource('nekainitmetoda'); // $resurs ima vrednost "Nesto"
}

 


Znaci, resurs dobija ime tako sto se _init odbaci, sve posle toga se prebaci u lowercase, a vrednost tog resursa je to sto ta metoda vraca.

[Ovu poruku je menjao kazil dana 15.06.2010. u 19:25 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 19:22 - pre 168 meseci
Citat:
kazil:  Bootstrap na nivou modula nije neophodan.

Pa zavisi... Preporuka je da, u slučaju modularne aplikacije, pored pomenute linije za load-ovanje "Modules" app resursa u konfiguracionom fajlu, svaki modul ima svoj bootstrap fajl, tačnije klasu koja će se izvoditi iz Zend_Application_Module_Bootstrap, budući da ta klasa obavlja neke jako korisne stvari. Najveća prednost ovakve implementacije Zend_Application_Module_Bootstrap svakako je to što će automatski biti obezbeđen autloading resursa određenog modula (modela, mapper-a, viewhelper-a, plugin-ova, servisa, itd.), što proizilazi iz činjenice da se pomenuta klasa izvodi iz Zend_Application_Bootstrap_Bootstrap, koja takođe radi istu stvar kroz metod getResourceLoader(). Zend_Application_Module_Bootstrap samo utilizira pomenuti metod, ali prednost je to što automatski set-uje odgovarajući namespace, a to je u stvari ime modula, kojeg dobija iz samog imena bootstrap klase.

Još jedna dobra stvar kod ovakve implementacije je i to što je moguće da u onom glavnom konfiguracionom fajlu, app.ini ili kako god, postoje postavke karakteristične za određeni modul, u obliku npr.:
Code:
foo.routes.admin_home.type = "Zend_Controller_Router_Route_Static"
foo.routes.admin_home.route = "foo"
foo.routes.admin_home.defaults.module = foo
foo.routes.admin_home.defaults.controller = index
foo.routes.admin_home.defaults.action = index 

... pri čemu je "foo" naravno ime modula.

Na taj način, svaki modul može da ima neku svoju, custom konfiguraciju, pa je tako npr., kao što se vidi iz prethodnog primera, moguće definisati rute koje dodaje neki modul, ili je kroz "Translate" resurs moguće dodati putanje do fajlova sa prevodima koji se nalaze u nekom modulu, i slično. Ovako nešto je moguće iz razloga što Zend_Application_Module_Bootstrap u konstruktoru proverava da li aplikacija (Zend_Application ili bootstrap klasa default modula) sadrži i opcije čiji key (indeks) odgovara imenu modula, pa onda dodaje svu tu custom konfiguraciju na stack opcija, kako bi i one bile izvršene u bootstrap procesu.
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-1.sezampro.yu.



Profil

icon Re: ZF - Problemi i diskusija15.06.2010. u 21:38 - pre 168 meseci
Kod mene je u layout bio meta charset. Znaci takve stvari koje vaze za ceo sajt idu u bootstrap koji je u application folderu. Ili ako se nesto definise u svakom kontroleru, tj. zajednicko je za sve akcije/kontrolere - na nivou sajta. A verovatno je ok uraditi tako i ako je za vecinu jer moze da se pregazi posle.
Ok to mi je sad jasno. :)

Nego Nikola pomenuo si lang fajlove. O tome sam bas razmisljao kako se radi. Ali sad me zbunilo to sa app.ini. Skoro da nista nisam petljao tamo, pa nisam siguran sta sve moze da se definise u app.ini.
Problem je sto sam zf u startu skontao nekako olako, jos i to sto ga u prekidima proucavam pa i zaboravim sta sam skapirao pre dva-tri dana. :)
Mislim da cu ovih dana probati ozbiljnije da ga savladam. Moguce da cu vam dosaditi sa pitanjima :) ali trudicu se da pre toga iscrpim sve druge izvore. :)

U svakom slucaju tnx ljudi. ;)

btw
Citat:
kazil: malo razumljivije u return-ovanju resursa (lakse mi je preko koda nego recima :D):

Kod cesto kao i slika govori vise nego hiljadu reci. :D
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-6.sezampro.rs.



Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 06:55 - pre 168 meseci
Vidim ja da ce ovde biti zavrzlama.

U public/index.php (root sajta) sam na kraju upisao print_r($application) i dobio negde oko 11k linija. WTF?!
To isto sam uradio u toku isprobavanja add, edit, delete iz baze onih muzickih albuma iz gore pomenutog pdf tuta. Ajd reko da bacim pogled sta ima tamo. Dobio sam oko 100 linija. I to mi je bilo puno, a ovo... da se slogiras!

Sta sam mogao da zeznem? Za sada postoji par kontrolera, nema veze sa bazom, unosom, obradom bilo cega. phtml fajl je samo par reci signalizacije radi. Tek sam poceo da pripremam strukturu, malo pre uz kafu.

Hteo sam da kreiram jedan form i taj php fajl koji je u folderu public/forms (public je ime modula) nece da nadje. Zato sam i uradio print_r da vidim gde ga trazi. Trazi ga u application/forms. A ja imam u svakom modulu pa jedan folder forms. Kontam da bi trebalo u app.ini da se definise druga putanja, ali ne mogu da nadjem kako...

Uopste ne kapiram zasto je ovako veliki objekat. Sledio sam tacno ono sto ste gore pisali. Mislim da nisam imao gde napraviti gresku jer ukupno ako ima 15-20 linija koda.. a kako me krenulo, ko zna... :)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 10:04 - pre 168 meseci
Citat:
masinac_1: U public/index.php (root sajta) sam na kraju upisao print_r($application) i dobio negde oko 11k linija. WTF?!

Pa ne znam šta ti je tu čudno... Pogledaj u kod klase Zend_Application i videćeš da ona sama po sebi ima oko 400 linija čistog koda. Ali kad radiš print_r instance te klase, dobićeš i ispis svih tih objekata koje ona ima kao članove klase - $_autoloader, $_bootstrap. Na broj linija neće uticati samo ti objekti, jer nakon bootstrap-ovanja, biće mnogo elemenata i u tom nizu $_options (u njega se smeštaju sve one opcije iz app.ini), koji je takođe član klase Zend_Application.

Citat:
masinac_1: Hteo sam da kreiram jedan form i taj php fajl koji je u folderu public/forms (public je ime modula) nece da nadje.

A kako si nazvao tu formu? Tačnnije, klasu i fajl u kome se ona nalazi? U slučaju da ti se modul zove public, klasa te forme bi trebala da ima naziv, npr. Public_Form_Foo, a fajl bi trebao da se zove Foo.php. Doduše, ako je taj tvoj public modul označen kao default, onda je prefiks "Public" u nazivu klase suvišan.
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-1.sezampro.yu.



Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 10:45 - pre 168 meseci
U public modulu sam pisao bez prefiksa a u admin sa prefiksom (Admin_). Pronalazi ga samo u "application/forms". To vazi za sve module. Ali hteo sam za svaki modul posebno folder forms. Problem je sto nista osim view i controlers nece da skonta u modulu. Da napomenem, bootstrap u application folderu je jos uvek prazan i u application/configs/app.ini sam upisao samo ono sto ste gore naveli.
Sada mi je forms, models, configs i layout u application folderu a hteo bih da ih smestim u foldere odgovarajucih modula (ajd configs mozda i ne mora).

Nego kako bre normalno 11 000 linija?! Evo kopiracu ti ono sto bas upada u oci da se ponavlja:
Code:
[_registry:protected] => ArrayObject Object
    (
        [doctypes] => Array
            (
                [XHTML11] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                [XHTML1_STRICT] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

                [XHTML1_TRANSITIONAL] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                [XHTML1_FRAMESET] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
                [XHTML_BASIC1] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
                [XHTML5] => <!DOCTYPE html>
                [HTML4_STRICT] => <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                [HTML4_LOOSE] => <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

                [HTML4_FRAMESET] => <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
                [HTML5] => <!DOCTYPE html>
            )

        [doctype] => XHTML1_STRICT
    )

To isto se nalazi na 14 mesta u objektu. I sve ostalo je toliko puta ponovljeno. Mislim da je greska kod mene, posto kao sto rekoh sa onim muzickim albumima (tut u pdf-u) je bilo oko 100 linija, a ova sada aplikacija je daleko manja (ako se uopste moze tako nazvati jer nema skoro nista).
Nemam pojma koliko memorije zauzima objekat, gledam to kroz linije... sirovog teksta ima skoro megabajt. Ako je ovo normalno onda uopste nije dobro i pitam se kako radi neka aplikacija radjena u zendu pri poseti od nekoliko hiljada korisnika.
Ako je greska i objekat 14 puta manji, to je ok.. u protivnom bolje da cepam moje klase, pa i proceduralno po malo nego da sve sto napravim smori server i dzaba mi sto je ultra mega giga opsno kada jedva radi. :)

btw
Citat:
Nikola Poša: Ali kad radiš print_r instance te klase, dobićeš i ispis svih tih objekata koje ona ima kao članove klase

To sam bas i hteo, da vidim sta sve drzi u memoriji od pocetka do kraja. Plus trebala mi je putanja koju koristi za trazenje forms.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 11:38 - pre 168 meseci
Citat:
masinac_1: U public modulu sam pisao bez prefiksa a u admin sa prefiksom (Admin_). Pronalazi ga samo u "application/forms". To vazi za sve module. Ali hteo sam za svaki modul posebno folder forms.

Da li imaš bootstrap klase u okviru admin modula, i da li se ta klasa izvodi iz Zend_Application_Module_Bootstrap? A verovatno imaš, pošto kažeš da si dodao resources.modules = '' u app.ini, a taj resurs bi bacio izuzetak u slučaju da neki modul kojeg pokušava da bootstrap-uje nema svoju bootstrap klasu.

Citat:
masinac_1: Nego kako bre normalno 11 000 linija?! Evo kopiracu ti ono sto bas upada u oci da se ponavlja:

Da, 11000 je stvarno malo neoubičajena cifra. Verovatno onda negde kod tebe u kodu dolazi do bespotrebnog izvršavanja app resursa po više puta...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 11:51 - pre 168 meseci
btw Za taj ponavljajući kod kojeg si poslao, baci pogled na source konstruktora klase Zend_View_Helper_Doctype, tu nastaje taj ArrayObject objekat. I kao što vidiš taj helper poseduje upravo tu promenljivu $_registry. Verovatno nekim čudom po više puta izvršavaš resurs za inicijalizovanje View-a (Zend_Application_Resource_View), i pritom mu prosleđujući opciju za doctype, nakon čega taj resurs poziva pomenuti view helper, koji tu informaciju o doctype-u upisuje u registry, kako bi ista mogla da se reuse-uje u toku jednog zahteva.
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-1.sezampro.yu.



Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 18:55 - pre 168 meseci
Vidi, obrisao sam sve iz index kontrolera. Znaci indexAction - nista.
Code:
<?php
class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
    }
}

Dve reci u index.phtml
layout.phtml par html tagova i <?php echo $this -> layout () -> content; ?>
application/bootstrap.php prazan (samo jedan imam)
Code:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{


}

/public/index.php (root sajta)
Code:
<?php
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/app.ini'
);
$application->bootstrap()
            ->run();


Kada unesem print_r($application) posle run(); dobijem ovaj objekat 22 puta ponovljen (a source strane je 11k linija):
Code:
[_response:protected] => Zend_Controller_Response_Http Object


Dosta objekata i nizova je puno puta ponovljeno. Ja uopste nemam ideju zasto bi trebalo ovako? Ako se nesto pojavljuje/potrazuje na vise mesta, napise se na jednom i poziva sa jednom-dve linije. Ovo sad je cista suprotnost. Ne trazi se na vise mesta vec samo jednom - a pise se 22 puta.
A nemam ideju ni gde je greska jer sam sve uklonio, skoro da nista nije ostalo osim onog minimuma cisto da se vidi da radi.

[Ovu poruku je menjao masinac_1 dana 16.06.2010. u 20:07 GMT+1]

[Ovu poruku je menjao masinac_1 dana 16.06.2010. u 23:50 GMT+1]
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.mbb.telenor.rs.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 19:14 - pre 168 meseci
Nije greska, tako je uvek (delimicno i zbog toga se govori za ZF da je bloated). Samo naprimer, svi resursi iz bootstrapa (i custom i oni ugradjeni) se nakon bootstrapping-a ubacuju (inject) u front controller, kako bi resursi bili dostupni tokom celog zivota aplikacije.
 
Odgovor na temu

masinac_1
Novi Sad

Član broj: 260719
Poruke: 44
*.adsl-a-7.sezampro.rs.



Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 20:30 - pre 168 meseci
Ali zar to nije malo van svake pameti?! Kako to da vam ne smeta?
Imamo nap. jedan niz. Njega koriste 4 metode. Pa necemo za svaku metodu praviti objekat u objektu i u taj drugi unositi potreban niz. Napravicemo glavni objekat i niz uglaviti negde pa pozivati kada je potreban.
Ja uopste ne razumem logiku po kojoj je dobro i potrebno duplirati neki niz/objekat 20+ puta.
Ovo moze da rezultuje visetruko vecim opterecenjem servera. Jos puta broj korisnika. Vise nisam pametan... da li uopste da ucim zend ili sam da pisem klase. Kapiram da su serveri jaki, ali nije resenje kupiti/zakupiti zver ako moze u kodu da se smanji potrosnja resursa.

Jeste li vi stvarno 100% sigurni da je u redu imati na 20-ak mesta jedan isti niz/objekat ponovljen. I tako 90% podataka u velikom objektu, koji onda postaje opasno veci. Na kraju se dobije skoro megabajt svega toga iako jos uvek aplikacija nista ne radi.

Stvarno... dzaba sve pogodnosti, ako je ovo normalno - jako los framework. Nadam se da gresim...

[Ovu poruku je menjao masinac_1 dana 16.06.2010. u 23:51 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: ZF - Problemi i diskusija16.06.2010. u 21:02 - pre 168 meseci
To što ti nakon print_r-a dobijaš neki objekat ispisan 20+ puta ne znači da je instanca tog objekta zaista napravljena toliko puta. Objekti se prenose po referenci, i u ZF-u je česta pojava da se jedan objekat koristi na nekoliko mesta u toku jednog zahteva, npr. request objekat. Tako da, ne možeš da sudiš samo na osnovu tog jednog print_r-a, jer ta funkcija jednostavno ne može da bude merilo. Primena te funkcije nad nekim objektom daće ispis svih njegovih članova, a to opet mogu biti objekti, pa onda ispis članova tog pod-objekta, itd., pri čemu to može da ide jako daleko u dubinu. Uzmi bilo koji drugi framework, i probaj da odradiš print_r tako nekog glavnog objekta i opet ćeš dobiti jako dugačak output.
 
Odgovor na temu

[es] :: PHP :: ZF - Problemi i diskusija

Strane: < .. 1 2 3 4 5 6 7 8 9 ... Dalje > >>

[ Pregleda: 33984 | Odgovora: 229 ] > FB > Twit

Postavi temu Odgovori

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