Просмотр поста

.
Delphinum
Добавлено: 01.04.2017 / 12:56
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>


Будет ли интересно кому нить сие творение, или не стоит тратить время на документирование и примеры?