<?php

use xmvc\DB;
use xmvc\MVC;
use xmvc\Dump;
use xmvc\Session;

$defineRemarkArr = [
    'IS_CLI' => '是否是控制台模式',
    'IS_WIN' => '是否是Windows系统',
    'IS_DEVELOP' => '是否是开发环境, Nginx 添加开发者头信息 fastcgi_param X_DEVELOP "1";',
    'CONFIG_USE_APCU' => '系统配置文件是否使用 APCu 缓存, CLI 和 DEVELOP 模式下此选项恒为 false',
    'ROOT' => '项目主目录',
    'DIR_MVC' => 'MVC 目录',
    'PROJECT' => '项目名称',
    'DIR_CONFIG' => '配置文件目录',
    'DIR_ACTION' => '控制器目录',
    'DIR_MODEL' => '模型目录',
    'DIR_VIEW' => '视图目录',
    'LF' => '全局换行符(文件与字符串), 默认 \\n',
    'URL_TYPE' => '网址类型, PATH:纯路径模式, QUERY_STRING: 通过 ? 号传路径, index.php?xx/xx-xx 模式',
    'SITE' => '当前站点名称',
    'IS_DEFAULT_SITE' => '是否是默认站点, 默认站点在网址中需省略',
    'SITE_GUID' => '站点唯一ID 用于一些缓存键及加密键的盐',
    'SITE_USER_LOGIN_KEY' => '站点用户登录 SESSION 键',
    'SITE_USER_INFO_KEY' => '站点登录用户信息 SESSION 键',
    'HOST' => '根网址',
    'URL_SELF' => '当前网址',
    'HTTP' => 'http | https 协议',
    'IS_DEFAULT_LANG' => '当前是否是默认语言, 默认语言在网址中需省略',
    'LANG' => '当前语言名称',
    'HTTP_HOST' => '带 http | https 头域名及端口的根网址, cli 模式无此常量',
    'HTTP_URL_SELF' => '带 http | https 的当前网址',
    'DEBUG' => '调试模式',
    'SVER' => '当前站点的静态文件版本号',
    'R_OK' => '返回信息 - 成功标记',
    'R_NO' => '返回信息 - 失败标记',
    'R_INFO' => '返回信息 - 普通消息',
    'R_WARNING' => '返回信息 - 警告消息',
    'R_ERROR' => '返回信息 - 错误消息',
    'DIR_STATIC' => '静态文件目录',
    'DIR_FILES' => '用户文件目录',
    'DIR_LOCALE' => '数据文件目录, 例语言包',
    'DIR_CACHE' => '缓存目录',
    'DIR_LOG' => '日志目录',
    'DIR_RUNTIME' => '运行时的临时文件目录',
    'URL_STATIC' => '静态文件网址',
    'URL_FILES' => '用户文件网址',
    'URL_CACHE' => '缓存文件网址',
    'URL_LOG' => '日志文件网址',
    'URL_RUNTIME' => '运行时文件网址',
    'DEBUG_BACKTRACE' => 'debug_backtrace() 填充选项, 0: DEBUG_BACKTRACE_IGNORE_ARGS, 1:DEBUG_BACKTRACE_PROVIDE_OBJECT',
];
$defineArr = get_defined_constants(true)['user'];
$defineContents = '';
foreach ($defineArr as $k => $v) {
    $remark = isset($defineRemarkArr[$k]) && $defineRemarkArr[$k] != '' ? ' // ' . $defineRemarkArr[$k] : '';
    $v = Dump::echoValueByType($v, true);
    $defineContents .= '<span class="define-key">\'' . $k . '</span> = <span class="define-value">' . $v . '</span> <span class="define-remark">' . $remark . '</span>';
    $defineContents .= '<br />';
}
$defineContents = '<div class="dd"><pre>' . $defineContents . '</pre></div>';
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charSet="utf-8" />
    <title>常量, 配置, SESSION, SERVER</title>
    <style>
        body {
            padding: 1rem;
        }

        .sidebar {
            position: fixed;
            top: 10px;
            right: 10px;
            width: 280px;
            background-color: #f9f9f9;
            border: 1px solid #ddd;
            padding: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            border-radius: 5px;
        }

        .sidebar a {
            display: block;
            margin-bottom: 5px;
            color: #3498db;
            text-decoration: none;
        }

        .sidebar a:hover {
            text-decoration: underline;
        }

        .define-remark {
            font-family: "Microsoft YaHei", monaco, Consolas, Menlo, Courier, monospace;
            color: #3498db;
        }
    </style>
</head>

<body>
    <div>
        <h1 id="block_session">SESSION</h1>
        <?php
        if (isset($_SESSION)) {
            dump('注意存在 $_SESSION', $_SESSION);
        }
        dump(Session::getAll());
        ?>
        <h1 id="block_server">SERVER</h1>
        <?php dump($_SERVER); ?>
        <h1 id="block_define">常量</h1>
        <?php echo $defineContents; ?>
        <h1 id="block_confing">配置</h1>
        <?php
        $db = new DB();
        dump(MVC::$cfg);
        ?>
    </div>
    <div class="sidebar" id="sidebar">
        <a href="#">SESSION</a>
        <a href="#block_server">SERVER</a>
        <a href="#block_define">常量</a>
        <a href="#block_confing">配置</a>
    </div>

</body>

</html>