⊗ppMVDFmCn 28 of 35 menu

PHPдеги MVC фреймворктеги контроллерлер

Силер мурунтан биле тургандай, биздин фреймворктубуздун бардык контроллерлеринин render методу бар, ал көрүнүшкө маалымат жиберүү үчүн чакырылышы керек. Бул метод биздин, колдонуучунун контроллерлери ядродо жайгашкан Controller аталык классын мурастап алат. Келгиле, бул классты жасайлы:

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

Силер көргөндөй, render методу параметр катары көрүнүштүн атын жана көрсөтүү үчүн маалыматты кабыл алат. Бул метод атайын Page класстын объектин кайтарсын, анда контроллердин аракетинин көрүнүш маалыматтары болот. Бул класста көрүнүштүн аты, маалыматтар, ошондой эле барактын тайтлы жана сайттын макети үчүн файлдын аты болот:

<?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; } } ?>

Анда биздин render методубуздун коду ушул сыяктуу болот:

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

Бул жерде эмне болуп жатканын түшүндүрөйүн. Көрүнүштүн аты жана маалыматтар методдун параметрлери менен келет. Бирок, колдонуучунун контроллеринде барактын тайтлы да белгиленет - title касиетине жазуу менен. Демек, $this->title ичинде тайтл болот, биз аны Page класстын конструкторуна өткөрөбүз.

Макет (layout) менен да кээ бир нюанстар бар. Силер биле тургандай, биздин фреймворк default.php файлындагы макетти колдонот. Иш жүзүндө, ар бир аракет башка макетке ээ болушу мүмкүн. Бул үчүн аракеттин өзүндө layout касиетине башка макеттин атын жазуу керек.

Бул кандайча жеткиликтүү болот: биздин аталык контроллер layout касиетине ээ, ал ыңгайлаштырылганда 'default.php' маанисин ээ. Бул ыңгайлаштырылган макет болот. Бирок, эгерде колдонуучунун контроллер аракети layout касиетинин маанисин кайра аныктаса, анда макет да башкача болот.

Менин Controller класстын кодун көчүрүп, аны файлга /core/Controller.php жайгаштырыңыз.

Менин Page класстын кодун көчүрүп, аны файлга /core/Page.php жайгаштырыңыз.

Кыргызча
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу