AlkatraZ, за основу я брал идеи заложенные Jekyll, а именно простота и универсальность через настройки (глобальные настройки можно переопределять для каждого каталога или даже конкретного файла).
Под лендинги и сайты, думаю, подойдет просто идеально, если нужно что то посложнее, можно использовать такую схему:
<?php
include('sp.php');
// Контроллер страницы
$db = $sp['database'];
$rows = $db->query(...);
?>
<!-- Шаблон -->
<ul>
<?php foreach($rows as $row); ?>
<li><?= $row['val'] ?></li>
<?php endforeach; ?>
</ul>
Страницы получаются более структурированны (вверху контроллер, внизу шаблон) и крайне гибкими (можно сделать все, что позволяет PHP).
В остальном да, нужно знать меру )
Добавлено: 17.04.2017 / 12:36
Народ, я в некотором замешательстве. Предложенный мной в этой теме код за последнюю неделю-две разросся в полноценный проект (делать было нечего, сидел допиливал его до вменяемого формата), вот теперь не знаю что с ним поделать.
В моих проектах его применить не получиться, ибо используем уже отработанный стек техники, а новые проекты писать не планирую.
Есть два варианта:
1. Впилить пример какого нить проекта и развивать решение
2. Выпилить проект и забыть
В данный момент решение хорошо подойдет для небольших и средних проектов, администрируемых не очень искушенными в PHP пользователями. Ориентир держу на декларативности, вот примерчик страницы со списком статей в блоге (сильно упрощенной):
<?php
// Пагинация
$start = isset($_GET['start'])? (int) $_GET['start'] : 0;
$offset = isset($_GET['offset'])? (int) $_GET['offset'] : 2;
$sp = [
'layout' => [ // Переменные шаблона
'title' => 'Статьи',
],
'i18n' => [ // Интернационализация
'domain' => '_locale',
],
'pdo' => [ // Работа с БД
'queries' => [
'articles' => [ // Запрос списка статей
'SELECT * FROM article LIMIT :start, :offset',
'params' => [
'start' => $start,
'offset' => $offset,
],
],
'articlesCount' => [ // Запрос количества статей
'SELECT COUNT(*) AS count FROM article',
],
],
],
];
include('../sp.php');
$articlesCount = $articlesCount->fetch()->count;
?>
<!-- Шаблон -->
<h1>Статьи</h1>
<p>
<ul>
<?php foreach($articles as $article): ?>
<li>
<a href="/articles/view?id=<?= $article->id ?>">
<?= $article->title ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<ul>
<li>
Всего <?= i18n_plural($articlesCount, '%d article') ?>
</li>
<li>
<a href="/articles/create"><?= i18n('create') ?></a>
</li>
<li>
<a href="/articles?start=<?= $start - $offset ?>"><?= i18n('prev') ?></a>
</li>
<li>
<a href="/articles?start=<?= $start + $offset?>"><?= i18n('next') ?></a>
</li>
</ul>
</p>
Будет ли интересно кому нить сие творение, или не стоит тратить время на документирование и примеры?