⊗ppMVDFmCn 28 of 35 menu

PHPda o'z MVC freymvorkingiz uchun Kontrollerlar

Bildigingizdek, bizning freymvorkimizning barcha kontrollerlari render metodiga ega bo'lib, u ma'lumotlarni ko'rinishga yuborish uchun chaqiriladi. Ushbu metod bizning, foydalanuvchi kontrollerlari Controller ota sinfidan meros qilib oladi, u yadroda joylashgan. Keling, bu sinfni yaratamiz:

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

Ko'rib turganingizdek, render metodi parametr sifatida ko'rinish nomi va ko'rsatish uchun ma'lumotlarni qabul qiladi. Bu metod Page maxsus sinfining ob'ektini qaytarsin, unda kontroller harakatining ma'lumotlar ko'rinishi haqida ma'lumot bo'ladi. Ushbu sinfda ko'rinish nomi, ma'lumotlar, shuningdek sahifa sarlavhasi va sayt maketi fayli nomi bo'ladi:

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

Undan so'ng bizning render metodimizning kodi quyidagicha ko'rinadi:

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

Bu yerda nima bo'layotganini tushuntirayman. Ko'rinish nomi va ma'lumotlar metod parametrlari sifatida keladi. Biroq, foydalanuvchi kontrollerida sahifa sarlavhasi ham belgilanadi - title xususiyatiga yozish orqali. Demak, $this->title ichida Page sinfining konstruktoriga uzatadigan sarlavhamiz bo'ladi.

Layout bilan bog'liq nuanslar ham bor. Bilganingizdek, bizning freymvorkimiz default.php faylidagi layoutdan foydalanadi. Aslida, har bir harakat boshqa layoutga ega bo'lishi mumkin. Buning uchun harakatning o'zida layout xususiyatiga boshqa layout nomini yozish kerak.

Bunga qanday erishiladi: bizning ota kontrollerimiz layout xususiyatiga ega, standart qiymati 'default.php'. Bu standart layout bo'ladi. Biroq, agar foydalanuvchi kontrollerining harakati layout xususiyatining qiymatini o'zgartirsa, layout ham boshqacha bo'ladi.

Mening Controller sinfim kodini nusxalang va /core/Controller.php faylida joylashtiring.

Mening Page sinfim kodini nusxalang va /core/Page.php faylida joylashtiring.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish