DevCraft Документации
Руководства

PHP DevCraft Standards

Оверлей: русский PHPDoc, DLEPlugins::Check, публичные templates — без дубля конституции.

Практический оверлей к конституции PHP: то, чего нет в дайджесте I–XI — BAD/GOOD для языка в коде, DLEPlugins::Check() и публичного фронта. Принципы Roistat, tabs, слои — только в конституции.

Язык в коде

Комментарии, PHPDoc (@param / @return), тексты exception и UI-строки в PHP — на русском. Ответы агента в чате — по отдельным правилам чата. Legacy не переводить оптом: только затронутые места.

// ❌ BAD
/** Returns admin context for the current request. */
throw new RuntimeException('Module not found');

// ✅ GOOD
/** Возвращает контекст админки для текущего запроса. */
throw new RuntimeException('Модуль не найден');

DLEPlugins::Check()

Каждый require / require_once / include / include_once проектных путей — через DLEPlugins::Check(), в том числе с ENGINE_DIR, ROOT_DIR, DC_ROOT.

// ❌ BAD
require_once ENGINE_DIR . '/skins/default.skin.php';
include ROOT_DIR . '/devcraft/init.php';

// ✅ GOOD
require_once DLEPlugins::Check(ENGINE_DIR . '/skins/default.skin.php');
require_once DLEPlugins::Check(ROOT_DIR . '/devcraft/init.php');
include_once DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php');

Исключения (без DLEPlugins::Check()):

  • Composer autoload (vendor/autoload.php)
  • Standalone-tools без DLE-bootstrap (например devcraft/assetschecker/)
  • Чистая PHP-стандартная библиотека / внутренний require без файлового пути проекта

Публичный фронт

СлойГдеЧто
PHPengine/modules/devcraft/*.phpЛогика, права, $tpl->set
HTML/CSS/JStemplates/{skin}/devcraft/{module}/Публичная разметка
Админкаdevcraft/src/**/templates/*.twigTwig + Metro

Рендер публичных шаблонов — штатный DLE dle_template (load_template / compile). Twig не использовать для файлов в templates/. Не собирать публичный HTML через echo.

// ❌ BAD — HTML в engine/modules/devcraft/*.php
echo '<div class="box">' . htmlspecialchars($title, ENT_QUOTES, 'UTF-8') . '</div>';

// ✅ GOOD
$tpl->set('{title}', htmlspecialchars($title, ENT_QUOTES, 'UTF-8'));
$tpl->load_template('devcraft/dleapi/profile.tpl');
$tpl->compile('content');
echo $tpl->result['content'];

Fallback скина: нет файла в текущей теме → templates/Default/devcraft/....

Админский Twig: reference/front-end/templates.

См. также

На этой странице