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

Nedefinisana situacija: PHP5-OOP / MVC??

[es] :: PHP :: Nedefinisana situacija: PHP5-OOP / MVC??

[ Pregleda: 2215 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Nedefinisana situacija: PHP5-OOP / MVC??30.03.2007. u 14:16 - pre 206 meseci
Pozdrav svima,

Pisem jednu veliku intranet aplikaciju koristeci PHP kao Front controler, Input Filter, Model i View, a AJAX kao Command controller.

Pojavile su mi se izvesne nedoumice, a to cu najbolje opisati kroz kod. Osnovna klasa za View (jaaako uprošćeno, jednostavnosti radi):
Code:

abstract class baseViewHTML {
    
    final static function renderHeader(){    
        return "<br> Header <br>";    
    }
    final static function renderFooter(){
        return "<br> Footer <br>";    
    }
    
    private static function renderSidebar(){
        //function to make standard sidebar
        return "<br> Sidebar <br>";    
    }
    abstract static function renderContent();
}


Klasa koja nasledjuje baseViewHTML klasu:
Code:

class sampleModuleViewHTML extends baseViewHTML {

    public static function renderContent(){
        return "<br> Content <br>";    
    }
    private static function renderSidebar(){
        return "<br> Module - specific Sidebar <br>";    
    }
    public function render(){
        $output="";        
        $output=parent::renderHeader();        #nedoumica br.1
        $output.=self::renderSidebar();
        $output.=self::renderContent();
        $output.=parent::renderFooter();    #nedoumica br.2

        return $output;
    }
    
}



Komentar: glavna klasa formira header i footer (metode su deklarisane kao final, i ne mogu se menjati kroz nasledjene klase); takodje formira interface za prikaz glavnog sadrzaja (apstraktna metoda renderContent), i formira funkciju za prikaz "sidebara" (dela View-a koji prikazuje razne sitne informacije); sidebar moze, a i ne mora biti definisan kroz nasledjene funkcije, s obzirom da je standardan sidebar definisan u glavnoj klasi.

Nedoumice: ako u klasi sampleModuleViewHTML u funkciji render() napisem:
Code:

        $output=parent::renderHeader();        


ili
Code:

        $output=self::renderHeader();        


...dodje mu na isto? Kako je to moguce? Zar ne bi PHP engine trebalo da javi gresku ako se napise $output=self::renderHeader(); s obzirom da je u glavnoj klasi ta metoda deklarisana kao final? Isto pitanje je i za deo $output.=parent::renderFooter();.

Takodje, izgleda da je nemoguce metodu u glavnoj klasi deklarisati kao abstract private, da joj ogranicim "vidljivost" kroz abstraktni interface?


10x unapred, da li je jos neko imao ovakve nedoumice?


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

_BloB_
Slobodan Pavkov
www.aspdotnetfaq.com
Kula, Serbia

Član broj: 35144
Poruke: 108
212.200.167.*

Sajt: www.aspdotnetfaq.com


Profil

icon Re: Nedefinisana situacija: PHP5-OOP / MVC??31.03.2007. u 09:20 - pre 206 meseci
druze, ovo ti sve govori: (PHP manual)

'PHP 5 introduces the final keyword, which prevents child classes from overriding a method by prefixing the definition with final. '

to ne znaci da tu metodu ne mozes pozvati iz nasledjene klase vec da je nemozes izmeniti (override).

poz
Blob
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Re: Nedefinisana situacija: PHP5-OOP / MVC??02.04.2007. u 08:58 - pre 206 meseci
Thanks.

What about "abstract private"?


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

_BloB_
Slobodan Pavkov
www.aspdotnetfaq.com
Kula, Serbia

Član broj: 35144
Poruke: 108
212.200.167.*

Sajt: www.aspdotnetfaq.com


Profil

icon Re: Nedefinisana situacija: PHP5-OOP / MVC??02.04.2007. u 11:14 - pre 206 meseci
Mika, moj prijateljski savet:

pocni da citas PHP Manual, tu ti sve pise, samo potrazi. Ako nema u osnovnom deli PHP manuala,
onda sigurno pise u komentarima php korisnika.

ako imas PHP Manual bez komentara, skini sa php.net najnoviji zajedno sa komentarima, to je vrlo korisno...

a sto se tice tvog pitanja:

PHP 5 introduces abstract classes and methods. It is not allowed to create an instance of a class that has been defined as abstract. Any class that contains at least one abstract method must also be abstract...

When inheriting from an abstract class, all methods marked abstract in the parent's class declaration must be defined by the child; additionally, these methods must be defined with the same (or weaker) visibillity. For example, if the abstract method is defined as protected, the function implementation must be defined as either protected or public.

...

a konkretno odgovor za 'abstract private' :

'Even private abstract methods can be declared, although I fail to see the use in them, as subclasses will not see them anyway.'

to je to...

Pozdrav
Blob
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Re: Nedefinisana situacija: PHP5-OOP / MVC??02.04.2007. u 14:40 - pre 206 meseci
Hvala puno!
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

[es] :: PHP :: Nedefinisana situacija: PHP5-OOP / MVC??

[ Pregleda: 2215 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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