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

.
Delphinum
Задача:
Простая и расширяемая система управления контентом, без ограничений на язык.

Решение:
Немного инфы чтоб было понятнее:
В систему изначально включено: layout, обработка ошибок, менеджер плагинов
Система использует возможности веб-сервера для роутинга запросов
Система работает на голом PHP и если немного подправить, то практически любой версии

Система представляет единственный файл следующего содержания:
<?php
// Шаблонизатор
function template($path, array $assign = []){
  extract($assign);
  ob_start();
  include($path);

  return ob_get_clean();
}

// Загрузка контейнера
$sp = isset($sp)? $sp : [];
if(is_readable(__DIR__ . '/config.php')){
  $sp = array_merge(include(__DIR__ . '/config.php'), $sp);
}

// Загрузка плагинов
if(isset($sp['plugins'])){
  foreach($sp['plugins'] as $plugin){
    include($plugin);
  }
}

ob_start();
register_shutdown_function(function() use($sp){
  $content = ob_get_contents();
  ob_end_clean();

  // Обработка ошибок
  $error = error_get_last();
  if(is_array($error) && isset($sp['error'])){
    return call_user_func($sp['error'], $error, $content, $sp);
  }

  // Рендеринг страницы
  if(isset($sp['render'])){
    $content = call_user_func($sp['render'], $content, $sp);
  }

  // Подключение layout
  if(isset($sp['layout'])){
    $content = template($sp['layout'], [
      'title' => isset($sp['title'])? $sp['title'] : 'SimplePage',
      'content' => $content,
    ]);
  }

  echo $content;
});


Далее я распишу возможности системы и процесс ее установки.