Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022
Avatar
MichalOškera:12.4.2020 15:36

Zdravím,
učím sa progmraovať hlavne v class. Chcel som skusiť, či by som dokázal naprogramovať load stránok pomocou tried. Že všetky stránky sa budu načitavať cez index.php a kód už upravi stránku podľa toho čo uživateľ chce.

Fatal error: Uncaught Error: Using $this when not in object context in

Keď spustim triedu Head v súbore len head.php tak funguje tak si myslim že mam chybu v triede Load.

Postúp kódu index.php -> Load -> Head

Load.php

class Load{

        public function __construct(){
                $this->Data  = new Data;
                $this->MySQL = new MySQL;

                $this->url   = '//'.$_SERVER['HTTPS'].$_SERVER['SERVER_NAME'].'/Web/templates/admin';
        }

        public function Admin($web){

                if($web == login){
                        $page = file_get_contents(__DIR__."/../../../templates/admin/login.html");

                        $page = str_replace("{Head}",           Head::hlavicka(),               $page);
                        $page = str_replace("{Conctent}",       Contents::result(),     $page);
                        $page = str_replace("{Footer}",         Head::footer(),                 $page);
                        $page = str_replace("{url}",            $this->url,                     $page);
                }else{
                        $page = file_get_contents(__DIR__."/../../../templates/admin/index.html");

                        $page = str_replace("{Head}",           Head::hlavicka(),               $page);
                        $page = str_replace("{Menu}",           Menu::result(),                 $page);
                        $page = str_replace("{Menu2}",          Menu::Menu2(),                  $page);
                        $page = str_replace("{Conctent}",       Contents::result(),     $page);
                        $page = str_replace("{Footer}",         Head::footer(),                 $page);
                }
         return $page;
        }

}

Head.php

class Head{

        public function __construct(){
                $this->url = 'http://'.$_SERVER['SERVER_NAME'].'/Web/templates/admin';
        }

        public function hlavicka(){
                $page = file_get_contents(__DIR__."/../../../templates/admin/head/head.html");
         return str_replace("{url}", $this->url, $page);
        }

        public function footer(){
                $page = file_get_contents(__DIR__."/../../../templates/admin/head/footer.html");
         return str_replace("{url}", $this->url, $page);
        }
}

ďakujem za rady :)

Zkusil jsem: Každú triedu, ktorú volam pomocu Load tak samostatne fungujú.

Chci docílit: Vykreslenie stránky

 
Odpovědět
12.4.2020 15:36
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:13.4.2020 10:43

Lepší než tohle by bylo implementovat MVC či MVP (Model-View-Presenter) a udělat templating že můžeš mít několik stránek s jinými daty, ale layout (head, footer, atd.) bude stejný, například takhle to je v Nette.
https://www.itnetwork.cz/…architektury

Editováno 13.4.2020 10:45
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
13.4.2020 10:43
Řeš pouze to, co dokážeš ovlivnit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.