Системные переменные
Полный справочник системных переменных, доступных в шаблонах MNRFY
Переменные времени и производительности
Время выполнения
<!-- Время начала выполнения скрипта -->
{{ MNRFY_START_TIME }}
<!-- Текущее время выполнения в миллисекундах -->
{{ (microtime(true) - MNRFY_START_TIME) * 1000 | round(2) }}ms
<!-- Пример использования в футере -->
<footer>
<p>Страница сгенерирована за {{ (microtime(true) - MNRFY_START_TIME) * 1000 | round(2) }}ms</p>
</footer>
Информация о памяти
<!-- Текущее использование памяти в байтах -->
{{ memory_get_usage() }}
<!-- Текущее использование в мегабайтах -->
{{ (memory_get_usage() / 1024 / 1024) | round(2) }}MB
<!-- Пиковое использование памяти -->
{{ (memory_get_peak_usage() / 1024 / 1024) | round(2) }}MB
<!-- Реальное использование памяти системой -->
{{ (memory_get_usage(true) / 1024 / 1024) | round(2) }}MB
<!-- Отладочная панель -->
{% if config('app.debug') %}
<div class="debug-memory">
<h4>Использование памяти</h4>
<p>Текущее: {{ (memory_get_usage() / 1024 / 1024) | round(2) }}MB</p>
<p>Пиковое: {{ (memory_get_peak_usage() / 1024 / 1024) | round(2) }}MB</p>
<p>Реальное: {{ (memory_get_usage(true) / 1024 / 1024) | round(2) }}MB</p>
</div>
{% endif %}
Пути к директориям
Основные пути фреймворка
<!-- Корневая директория проекта -->
{{ MNRFY_ROOT }}
<!-- Директория исходного кода -->
{{ MNRFY_SRC }}
<!-- Публичные ресурсы (CSS, JS, изображения) -->
{{ MNRFY_COMMON }}
<!-- Временные файлы и кеш -->
{{ MNRFY_TEMP }}
<!-- Загруженные пользователями файлы -->
{{ MNRFY_UPLOADS }}
<!-- Пример использования -->
{% if file_exists(MNRFY_UPLOADS ~ '/avatars/' ~ user.id ~ '.jpg') %}
<img src="/mnrfy-uploads/avatars/{{ user.id }}.jpg" alt="Аватар">
{% else %}
<img src="{{ asset('images/default-avatar.png') }}" alt="Аватар по умолчанию">
{% endif %}
Конструирование путей
<!-- Путь к конфигурационному файлу -->
{% set configPath = MNRFY_SRC ~ '/config/app.json' %}
<!-- Путь к файлу лога -->
{% set logPath = MNRFY_TEMP ~ '/logs/' ~ date('Y-m-d') ~ '.log' %}
<!-- Проверка существования файла -->
{% if file_exists(MNRFY_TEMP ~ '/cache/template_cache.php') %}
<p>Кеш шаблонов доступен</p>
{% endif %}
Информация о запросе
HTTP запрос
<!-- Объект запроса -->
{{ request.getMethod() }} <!-- GET, POST, PUT, DELETE -->
{{ request.getPath() }} <!-- /users/profile -->
{{ request.getUri() }} <!-- http://domain.com/users/profile -->
{{ request.getQuery() }} <!-- page=1&limit=20 -->
<!-- Информация о клиенте -->
{{ request.userAgent() }} <!-- User-Agent браузера -->
{{ request.ip() }} <!-- IP адрес клиента -->
<!-- Проверки типа запроса -->
{% if request.isSecure() %}
<span class="secure-badge">🔒 Безопасное соединение</span>
{% endif %}
{% if request.isAjax() %}
<!-- AJAX запрос - упрощенный вывод -->
{% endif %}
Параметры запроса
<!-- GET параметры -->
{{ request.input('page', 1) }} <!-- Параметр page или значение по умолчанию -->
{{ request.input('search') }} <!-- Поисковый запрос -->
{{ request.input('category') }} <!-- Универсальный метод для GET/POST -->
<!-- Все параметры -->
{% set allParams = request.all() %}
{% foreach allParams as key => value %}
<p>{{ key }}: {{ value }}</p>
{% endforeach %}
<!-- Проверка наличия параметра -->
{% if request.has('filter') %}
<p>Активный фильтр: {{ request.input('filter') }}</p>
{% endif %}
Информация о пользователе
Текущий пользователь
<!-- Объект пользователя -->
{{ user }} <!-- Объект авторизованного пользователя или null -->
{{ user.id }} <!-- ID пользователя -->
{{ user.name }} <!-- Имя пользователя -->
{{ user.email }} <!-- Email -->
{{ user.role }} <!-- Роль пользователя -->
<!-- Дополнительные свойства -->
{{ user.created_at }} <!-- Дата регистрации -->
{{ user.last_login }} <!-- Последний вход -->
{{ user.balance }} <!-- Баланс пользователя -->
{{ user.permissions }} <!-- Права доступа -->
<!-- Проверки -->
{% if user %}
<div class="user-info">
<p>Добро пожаловать, {{ user.name }}!</p>
<p>Баланс: {{ user.balance | money('₽') }}</p>
</div>
{% else %}
<div class="guest-info">
<p>Вы не авторизованы</p>
<a href="/login">Войти</a>
</div>
{% endif %}
Языковые настройки
Локализация
<!-- Текущий язык -->
{{ locale }} <!-- ru, en, de, etc -->
<!-- Язык браузера пользователя -->
{{ userLocale }} <!-- ru-RU, en-US, etc -->
<!-- Основной язык приложения -->
{{ default_locale }} <!-- Fallback язык -->
<!-- Доступные языки -->
{% foreach available_locales as lang %}
<a href="?lang={{ lang }}"
class="{{ lang == locale ? 'active' : '' }}">
{{ lang | upper }}
</a>
{% endforeach %}
<!-- Условный контент по языку -->
{% switch locale %}
{% case 'ru' %}
<p>Добро пожаловать на русскую версию сайта!</p>
{% case 'en' %}
<p>Welcome to the English version of the site!</p>
{% default %}
<p>{{ t('welcome') }}</p>
{% endswitch %}
Информация о браузере и устройстве
Детекция браузера
<!-- Информация о браузере (если доступна) -->
{{ browser_info.user_agent }} <!-- Полная строка User-Agent -->
{{ browser_info.browser.name }} <!-- Chrome, Firefox, Safari -->
{{ browser_info.browser.version }} <!-- Версия браузера -->
{{ browser_info.os.name }} <!-- Windows, macOS, Linux -->
{{ browser_info.device }} <!-- desktop, mobile, tablet -->
<!-- Условные стили для разных браузеров -->
<div class="content browser-{{ browser_info.browser.name | lower }}
os-{{ browser_info.os.name | lower }}
device-{{ browser_info.device | lower }}">
<!-- Контент адаптируется под браузер и устройство -->
</div>
<!-- Предупреждение для старых браузеров -->
{% if browser_info.browser.name == 'Internet Explorer' %}
<div class="browser-warning">
<p>Ваш браузер устарел. Обновите его для лучшей работы сайта.</p>
</div>
{% endif %}
Конфигурация приложения
Основные настройки
<!-- Глобальная конфигурация -->
{{ app.name }} <!-- Название приложения -->
{{ app.debug }} <!-- Режим отладки (true/false) -->
{{ app.timezone }} <!-- Часовой пояс -->
{{ app.version }} <!-- Версия приложения -->
{{ app.url }} <!-- Базовый URL -->
<!-- Использование в мета-тегах -->
<title>{{ page_title ?? app.name }}</title>
<meta name="application-name" content="{{ app.name }}">
<meta name="version" content="{{ app.version }}">
<!-- Условное отображение отладочной информации -->
{% if app.debug %}
<div class="debug-toolbar">
<p>Режим отладки активен</p>
<p>Версия: {{ app.version }}</p>
<p>Часовой пояс: {{ app.timezone }}</p>
</div>
{% endif %}
Среда выполнения
<!-- Информация о среде -->
{{ app.environment }} <!-- production, development, testing -->
<!-- Условные настройки для разных сред -->
{% switch app.environment %}
{% case 'development' %}
<link rel="stylesheet" href="{{ asset('css/debug.css') }}">
<script src="{{ asset('js/debug-tools.js') }}"></script>
{% case 'production' %}
<!-- Минифицированные файлы -->
<link rel="stylesheet" href="{{ asset('css/app.min.css') }}">
<script src="{{ asset('js/app.min.js') }}"></script>
{% default %}
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
{% endswitch %}
Сессии и состояние
Данные сессии
<!-- ID текущей сессии -->
{{ session_id() }}
<!-- Данные из сессии -->
{{ session.user_id }} <!-- ID пользователя в сессии -->
{{ session.cart_count }} <!-- Количество товаров в корзине -->
{{ session.last_page }} <!-- Последняя посещенная страница -->
<!-- Flash сообщения -->
{% if session.flash_success %}
<div class="alert alert-success">
{{ session.flash_success }}
</div>
{% endif %}
{% if session.flash_error %}
<div class="alert alert-danger">
{{ session.flash_error }}
</div>
{% endif %}
Системная информация
PHP и сервер
<!-- Версия PHP -->
{{ phpversion() }}
<!-- Информация о сервере -->
{{ $_SERVER['SERVER_SOFTWARE'] }} <!-- Apache/2.4.41, nginx/1.18.0 -->
{{ $_SERVER['SERVER_NAME'] }} <!-- Имя сервера -->
{{ $_SERVER['SERVER_PORT'] }} <!-- Порт сервера -->
<!-- Информация о системе -->
{{ php_uname('s') }} <!-- Операционная система -->
{{ php_uname('m') }} <!-- Архитектура -->
<!-- Загрузка системы (если доступна) -->
{% if function_exists('sys_getloadavg') %}
{% set loadAvg = sys_getloadavg() %}
<p>Загрузка системы: {{ loadAvg[0] | round(2) }}</p>
{% endif %}
Практические примеры
Отладочная панель
{% if app.debug %}
<div class="debug-panel" style="position: fixed; bottom: 0; right: 0;
background: #000; color: #0f0; padding: 10px;
font-family: monospace; font-size: 12px;">
<h4>🐛 Debug Info</h4>
<div>⏱️ Время: {{ (microtime(true) - MNRFY_START_TIME) * 1000 | round(2) }}ms</div>
<div>💾 Память: {{ (memory_get_usage() / 1024 / 1024) | round(2) }}MB</div>
<div>📊 Пик: {{ (memory_get_peak_usage() / 1024 / 1024) | round(2) }}MB</div>
<div>🔗 Путь: {{ request.getPath() }}</div>
<div>📱 Устройство: {{ browser_info.device ?? 'unknown' }}</div>
<div>🌍 Язык: {{ locale }}</div>
{% if user %}
<div>👤 Пользователь: {{ user.name }} (ID: {{ user.id }})</div>
{% else %}
<div>👤 Гость</div>
{% endif %}
<div>🐘 PHP: {{ phpversion() }}</div>
<div>🚀 Версия: {{ app.version ?? '1.0.0' }}</div>
</div>
{% endif %}
Адаптивный макет
<!DOCTYPE html>
<html lang="{{ locale }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ page_title ?? app.name }}</title>
<!-- Адаптивные стили -->
{% if browser_info.device == 'mobile' %}
<link rel="stylesheet" href="{{ asset('css/mobile.css') }}">
{% elseif browser_info.device == 'tablet' %}
<link rel="stylesheet" href="{{ asset('css/tablet.css') }}">
{% else %}
<link rel="stylesheet" href="{{ asset('css/desktop.css') }}">
{% endif %}
<!-- Тема по настройкам пользователя -->
{% set theme = user.theme ?? app.default_theme ?? 'light' %}
<link rel="stylesheet" href="{{ asset('css/themes/' ~ theme ~ '.css') }}">
<!-- RTL для арабских языков -->
{% if locale in ['ar', 'he', 'fa'] %}
<link rel="stylesheet" href="{{ asset('css/rtl.css') }}">
{% endif %}
</head>
<body class="locale-{{ locale }}
device-{{ browser_info.device ?? 'unknown' }}
theme-{{ theme }}
{{ user ? 'authenticated' : 'guest' }}">
<!-- Содержимое страницы -->
</body>
</html>
Системная информация
<div class="system-status">
<h2>Системная информация</h2>
<div class="status-grid">
<div class="status-item">
<h3>Приложение</h3>
<p>Название: {{ app.name }}</p>
<p>Версия: {{ app.version ?? '1.0.0' }}</p>
<p>Среда: {{ app.environment ?? 'production' }}</p>
<p>Отладка: {{ app.debug ? 'Включена' : 'Выключена' }}</p>
</div>
<div class="status-item">
<h3>Сервер</h3>
<p>PHP: {{ phpversion() }}</p>
<p>Веб-сервер: {{ $_SERVER['SERVER_SOFTWARE'] ?? 'Неизвестен' }}</p>
<p>ОС: {{ php_uname('s') }} {{ php_uname('m') }}</p>
</div>
<div class="status-item">
<h3>Производительность</h3>
<p>Время генерации: {{ (microtime(true) - MNRFY_START_TIME) * 1000 | round(2) }}ms</p>
<p>Память: {{ (memory_get_usage() / 1024 / 1024) | round(2) }}MB</p>
<p>Пиковая память: {{ (memory_get_peak_usage() / 1024 / 1024) | round(2) }}MB</p>
</div>
<div class="status-item">
<h3>Пользователь</h3>
{% if user %}
<p>ID: {{ user.id }}</p>
<p>Имя: {{ user.name }}</p>
<p>Роль: {{ user.role }}</p>
{% else %}
<p>Не авторизован</p>
<p>IP: {{ request.ip() }}</p>
{% endif %}
<p>Язык: {{ locale }}</p>
<p>Устройство: {{ browser_info.device ?? 'Неизвестно' }}</p>
</div>
</div>
</div>
Следующий шаг: Изучите системные функции.