Advertisement
SUNSPINX

Untitled

Jun 27th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.35 KB | None | 0 0
  1. <?php
  2.  
  3. // Router je speciální typ controlleru, který podle URL adresy zavolá
  4. // správný controller a jím vytvořený pohled vloží do šablony stránky
  5.  
  6. class SmerovacKontroler extends Kontroler
  7. {
  8.     // Instance controlleru
  9.     protected $kontroler;
  10.    
  11.     // Metoda převede pomlčkovou variantu controlleru na název třídy
  12.     private function pomlckyDoVelbloudiNotace($text)
  13.     {
  14.         $veta = str_replace('-', ' ', $text);
  15.         $veta = ucwords($veta);
  16.         $veta = str_replace(' ', '', $veta);
  17.         return $veta;
  18.     }
  19.  
  20.     // Naparsuje URL adresu podle lomítek a vrátí pole parametrů
  21.     private function parsujURL($url)
  22.     {
  23.         // Naparsuje jednotlivé části URL adresy do asociativního pole
  24.         $naparsovanaURL = parse_url($url);
  25.         // Odstranění počátečního lomítka
  26.         $naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], "/");
  27.         // Odstranění bílých znaků kolem adresy
  28.         $naparsovanaURL["path"] = trim($naparsovanaURL["path"]);
  29.         // Rozbití řetězce podle lomítek
  30.         $rozdelenaCesta = explode("/", $naparsovanaURL["path"]);
  31.         return $rozdelenaCesta;
  32.     }
  33.  
  34.     // Naparsování URL adresy a vytvoření příslušného controlleru
  35.     public function zpracuj($parametry)
  36.     {
  37.         $naparsovanaURL = $this->parsujURL($parametry[0]);
  38.        
  39.  
  40.         // Pokiaľ URL neobsahuje žiaden parameter
  41.         if (empty($naparsovanaURL[0]))
  42.             $this->presmeruj($jazyk . '/home');
  43.  
  44.         // Ak URL obsahuje parameter, tak 1. parametrom bude Kontroler
  45.         $aktivnyKontroler = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL));
  46.         $tridaKontroleru = $aktivnyKontroler . 'Kontroler';
  47.  
  48.         if (file_exists('mvc/kontrolery/' . $tridaKontroleru . '.php'))
  49.             $this->kontroler = new $tridaKontroleru;
  50.         else
  51.             $this->presmeruj($jazyk . '/notfound');
  52.  
  53.         // Volání controlleru
  54.         $this->kontroler->zpracuj($naparsovanaURL);
  55.  
  56.         // Nastavení proměnných pro šablonu
  57.         $this->data['titulek'] = $this->kontroler->hlavicka['titulek'];
  58.         $this->data['popis'] = $this->kontroler->hlavicka['popis'];
  59.         $this->data['klicova_slova'] = $this->kontroler->hlavicka['klicova_slova'];
  60.         $this->data['aktivny_link'] = $aktivnyKontroler;
  61.         $this->data['jazyk'] = $jazyk;
  62.  
  63.         // Nastavenie hlavnej šablóny
  64.         $this->pohled = 'rozlozeni';
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement