Системные переменные

Полный справочник системных переменных, доступных в шаблонах 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>
Следующий шаг: Изучите системные функции.