# Nex **Repository Path**: wfdaj/nex ## Basic Information - **Project Name**: Nex - **Description**: No description available - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-05 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nex PHP 8.4 的微型 SSR 框架 + 一个轻量论坛示例(帖子 / 标签 / 回复 / 账号 / 头像)。 应用代码只写全局助手函数(`db()`、`view()`、`auth()`…),所有实现都挂在容器里, 因此**换一个绑定就能换掉整条行为**,测试不需要真库、真磁盘、真会话。 需求源头与验收标准是 [`ai.md`](ai.md)(《微型 PHP 框架开发规范》v1.0);仓库怎么干活、踩过哪些坑见 [`CODEBUDDY.md`](CODEBUDDY.md)。本文件只讲怎么用。 ## 环境与安装 - PHP 8.4(用到带类型的类常量、属性提升、`never` 返回类型等) - 数据库二选一:MySQL 5.7+ / MariaDB,或者 SQLite 3(`pdo_sqlite`,PHP 默认自带) - Composer 2、PHPUnit 13、PHPStan 2(后三者是开发依赖) ```powershell composer install # 装数据库:交互式选择 MySQL 还是 SQLite,建库建表并灌一批测试数据(20 用户 / 100 帖子) php database/install.php # 也可以不交互,直接指定驱动(脚本化 / CI 用这个) php database/install.php --driver=sqlite # 只建库建表也可以:--no-seed php database/install.php --driver=mysql --fresh # --fresh:先清空已有数据再灌 php database/install.php --users=50 --posts=200 --seed=1234 # --seed 固定随机源,数据可复现 ``` 选完会把 `database.driver`(`mysql` | `sqlite`)写回 `config/database.php`:库和应用的驱动必须是同一个, 而"再手改一次配置"正是最容易漏的一步。MySQL 那条路先 `CREATE DATABASE IF NOT EXISTS` 再建表, SQLite 那条路只需要在 `storage/database.sqlite` 建文件(目录与表都由脚本处理)。手工装也行: ```powershell # MySQL(driver = mysql),表结构在 database/schema.sql,内容是 CREATE TABLE IF NOT EXISTS,可重复执行 mysql -u root -p -e "CREATE DATABASE bbs" mysql -u root -proot bbs -e "source e:/path/to/nex/database/schema.sql" ``` 连接参数在 `config/database.php`:MySQL 默认 `127.0.0.1:3306` / `bbs` / `root` / `root` / `utf8mb4`, SQLite 默认 `storage/database.sqlite`(写绝对路径,相对路径会被按"当前工作目录"解析)。 两套建表语句(`schema.sql` / `schema.sqlite.sql`)表结构一致,换驱动时应用代码一行都不用改。 灌进去的测试数据用同一个密码:登录示例 `seed01@nex.test` / `password`。 把 Web 根指向 `public/`,入口是 `public/index.php`;`storage/{cache,logs,sessions,uploads}` 需要可写 (目录由各实现按需自建,`0700`)。 前端资源是直接落盘的静态文件、**没有构建步骤**:`public/css/bootstrap.min.css`(Bootstrap 5.3.8)、 `public/css/app.css`(只放 Bootstrap 没有的规则,如 `.avatar`)、`public/js/bootstrap.min.js` (另有 `public/js/htmx.min.js`,已就位但未使用)。模板里不写 `