1 - это вопрос предпочтений. Простейшим способом было бы иметь отдельный файл верхнего и нижнего колонтитула. Тогда вы можете сделать что-то подобное в вашем контроллере страницы
$title="Page Title";
$var1 = 'var1';
$var2 = 'var2';
$var3 = array("asdf","adsfasdf","234");
include(HEADER); //$title is in header
include(DIR_VIEWS . 'page.php'); //$var1/2/3 are in page.php
include(FOOTER);
// variable were created before pages were included so they will be set in the templates
Если бы вы пошли по вложенному маршруту, вам пришлось бы начать возиться с str_replace, и он начинает двигаться к движку шаблонов, выходящему за рамки этого ответа.
2 - не нужно делать просмотры объектов. «Представление» может быть просто файлом вашей файловой системы, содержащим HTML для этого представления. Как мой пример выше. Эти страницы также могут содержать основные переменные php to loop / echo.
3 - Вы описываете фронт-контроллер (иногда называемый диспетчером или маршрутизатором). Это действительно путь. Существует несколько способов создания фронт-контроллера.
У вас может быть массив URL, указывающих на контроллеры.
$routes = array (
'~^/home/$~' => 'home.php',
'~^/contact/$~' => 'contact.php',
'~^/blog/.*?$~' => 'blog.php'
);
или вы можете использовать первый «каталог» в URL в качестве имени контроллера и загрузить этот файл из каталога вашего контроллера.
4 - Основная задача контроллера - получить информацию от модели и передать данные в представление.
Отредактировано для комментария
Если вы хотите, чтобы группа представлений имела боковую панель, просто включите это представление в другое представление. Например:
<div id="content">
<p>lorem ispum stuff</p>
</div>
<?php include(DIR_VIEWS . 'sidebar.php');
Просто убедитесь, что в контроллерах, которые «управляют» страницами с помощью боковых панелей, вы включили некоторый код для функций боковой панели:
if ( $_GET['keywords'] ) {
$sidebar_search_results = get_search_results($_GET['keywords']);
}
// this code should be in a file that you include
$sidebar_search_results
может быть массивом результатов, которые ваш боковой вид анализирует и отображает.