나만의 MVC 프레임워크를 위한 renderView 메서드
renderView 메서드는 뷰(view) 파일을 받아서
그 안에 변수 값들을 대입할 것입니다. 이것은
교묘한 방법으로 이루어집니다.
아시다시피, 뷰 파일에서 사용되는 변수들은
Page 클래스 객체의 data 속성에
포함되어 있습니다.
이 변수들은 연관 배열(associative array)입니다.
우리는 이 배열을 실제 변수들로 변환한 다음,
include를 통해 뷰 파일을 포함(include)해야
합니다.
이 경우 해당 파일에서 사용 가능한 변수들이
자신의 값을 얻게 되고,
출력 결과로 변수 값들이 대입된 HTML 코드를
얻게 될 것입니다.
배열을 변수들로 변환하기 위해,
특별한 함수 extract를 사용합니다:
<?php
private function renderView(Page $page) {
$viewPath = $_SERVER['DOCUMENT_ROOT'] . "/project/views/{$page->view}.php";
if (file_exists($viewPath)) {
ob_start();
$data = $page->data;
extract($data); // 배열을 변수들로 변환
include $viewPath; // 뷰 파일 포함
return ob_get_clean();
}
}
?>