⊗ppMVDFmCn 28 of 35 menu

PHP'de Kendi MVC Framework'ümüzde Kontrolcüler

Bildiğiniz gibi, framework'ümüzdeki tüm kontrolcüler, verileri görünüme göndermek için çağrılması gereken render metoduna sahiptir. Bu metod, kullanıcı tanımlı kontrolcülerimiz tarafından, çekirdekte bulunan Controller ebeveyn sınıfından kalıtılır. Hadi bu sınıfı yapalım:

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

Gördüğünüz gibi, render metodu parametre olarak görünüm adını ve görüntülenecek verileri alır. Bu metodun, kontrolcü işleminin veri görünümü hakkında bilgi içeren özel bir Page sınıfı nesnesi döndürmesine izin verin. Bu sınıf, görünüm adını, verileri, sayfa başlığını ve site düzeni dosyasının adını içerecek:

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

O zaman render metodumuzun kodu şu şekilde görünecek:

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

Burada neler olduğunu açıklayayım. Görünüm adı ve veriler metod parametreleri olarak geliyor. Ancak, kullanıcı kontrolcüsünde ayrıca bir sayfa başlığı da belirlenir - title özelliğine yazılarak. Bu, $this->title içinde, Page sınıfının yapıcısına ileteceğimiz başlığın bulunacağı anlamına gelir.

Düzen (layout) ile ilgili nüanslar da var. Bildiğiniz gibi, framework'ümüz default.php dosyasından bir düzen kullanır. Aslında, her işlemin farklı bir düzeni olabilir. Bunun için, işlemin kendi içinde layout özelliğine başka bir düzen adı yazılması gerekir.

Bu nasıl sağlanır: ebeveyn kontrolcümüzün, varsayılan olarak 'default.php' değerine sahip olan bir layout özelliği vardır. Bu varsayılan düzen olacaktır. Ancak, kullanıcı kontrolcüsünün bir işlemi layout özelliğinin değerini geçersiz kılarsa, düzen de farklı olacaktır.

Controller sınıfımın kodunu kopyalayın ve /core/Controller.php dosyasına yerleştirin.

Page sınıfımın kodunu kopyalayın ve /core/Page.php dosyasına yerleştirin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet