⊗ppMVDFmCn 28 of 35 menu

Контроллерҳо дар MVC фреймворки худ дар PHP

Чун аллакай медонистед, ҳамаи контроллерҳои фреймворки мо усули 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 мефиристем.

Бо макет низ нюансҳо мавҷуданд. Чунон ки медонистед, фреймворки мо макети файли 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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан