⊗ppMVDFmCn 28 of 35 menu

Ohjaimet omassa MVC-kehyksessä PHP:ssä

Kuten jo tiedät, kaikilla kehyksemme ohjaimista on metodi render, joka tulee kutsua lähettääksesi dataa näkymään. Tämän metodin perivät käyttäjien omat ohjaimet yläluokasta Controller, joka sijaitsee ytimessä. Tehdään tämä luokka:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Kuten näet, render-metodi ottaa parametrinaan näkymän nimen ja datan esitettäväksi. Olkoon, että tämä metodi palauttaa erityisen Page-luokan olion, joka sisältää tietoa ohjaimen toiminnon datan esittämisestä. Tämä luokka sisältää näkymän nimen, datan, sekai sivun otsikon ja sivuston asettelun tiedoston nimen:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Silloin render-metodimme koodi näyttää tältä:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Selitän, mitä tässä tapahtuu. Näkymän nimi ja data saapuvat metodin parametreina. Kuitenkin, käyttäjän omassa ohjaimessa asetetaan myös sivun otsikko - tallentamalla title-ominaisuuteen. Siis, $this->title sisältää otsikon, jonka välitämme Page-luokan konstruktorille.

Asettelussa on myös vivahteita. Kuten tiedät, kehyksemme käyttää asettelua tiedostosta default.php. Itse asiassa jokainen toiminto voi käyttää toista asettelua. Tätä varten tarvitsee itse toiminnossa layout-ominaisuuteen kirjoittaa toisen asettelun nimen.

Miten tämä saavutetaan: yläluokkamme ohjain sisältää layout-ominaisuuden, joka oletuksena sisältää arvon 'default.php'. Tämä tulee olemaan oletusasettelu. Kuitenkin, jos käyttäjän ohjaimen toiminto määrittelee uudelleen layout-ominaisuuden arvon, niin myös asettelu tulee olemaan erilainen.

Kopioi luokkani Controller koodi ja sijoita se tiedostoon /core/Controller.php.

Kopioi luokkani Page koodi ja sijoita se tiedostoon /core/Page.php.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää