Autor Zpráva
Fisak
Profil
Zdravím.. ještě uplně tak neovládám OOP ale snažím se si udělat šablonu pomocí OOP:

class get_default_template {

function __construct()
{

    $SQL_Template=db::query_system("SELECT type, page, skin, inc FROM page where page = '".mypage("page")."'");
    $Data_TMP=mysql_fetch_assoc($SQL_Template);

}

function template_link()
{

    redirect_page($this->$Data_TMP['inc']); 

}

function template_admin()
{

    load_page("admin/php_modules/".$this->$Data_TMP['page']."/index.php"); //php modul administrace
    load_page("themes/admin/".get_current_lang()."/index.php"); //šablona s html modulem administrace
    
}

function template_inc()
{

    if(file_exists("php_modules/".$this->$Data_TMP['page']"/index.php")) {
                
        load_page("php_modules/".$this->$Data_TMP['page']"/index.php"); //php modul
            
    }
            
        load_page("system/template.php"); //šablona

}

}

Bohužel s tim $this->$Data_TMP['page'] jsou problémy jelikož nevím jak to z construktoru dostat tam kde to potřebuji...
Joker
Profil
Fisak:
Mně to přijde „divné“ celé.

• Co je popsané slovesem (tj. jde o činnost), patří do metody. Třídy a atributy jsou pro věci popsané podstatnými jmény. Takže třída pojmenovaná get_default_template by vůbec neměla existovat.
• Konstruktor vytváří lokální proměnné, což tak jak to je udělané nemá žádný smysl.
• Třída db zjevně slouží jako jakási globální proměnná a konstruktor spoléhá na to, že bude v nějakém stavu. Takže to není přenositelné jinam.
• Používají se jakési globální funkce(?), k čemu pak vůbec je dobré to dělat objektově?
• Názvy metod mi připadají chaotické a neodpovídající jejich činnosti.
• Připadá mi, že pro každé použití třídy je napsaná konkrétní metoda (template_admin, template_inc), místo aby třída byla alespoň trochu univerzální

Sečteno a podtrženo to podle mě jen používá OOP klíčová slova, ale jinak to vůbec není objektový kód. Doporučil bych ještě nastudovat něco o OOP.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: