⊗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 클래스의 생성자에 전달한다는 의미입니다.

레이아웃에도 세부 사항이 있습니다. 아시다시피, 우리 프레임워크는 default.php 파일의 레이아웃을 사용합니다. 사실, 각 액션은 다른 레이아웃을 가질 수도 있습니다. 이를 위해서는 액션 자체에서 layout 속성에 다른 레이아웃 이름을 할당해야 합니다.

이것이 어떻게 달성되는지: 우리의 부모 컨트롤러는 기본값으로 'default.php' 값을 가지는 속성 layout를 가지고 있습니다. 이것이 기본 레이아웃이 될 것입니다. 그러나, 사용자 정의 컨트롤러의 액션이 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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부