# LingDuCodePHP框架 **Repository Path**: lingdubingfeng/ling-du-php-framework ## Basic Information - **Project Name**: LingDuCodePHP框架 - **Description**: - **无Composer依赖** - 完全独立运行,无需安装任何第三方包 - **纯PHP实现** - 所有功能均使用原生PHP开发 - **轻量级** - 核心代码精简,加载快速 - **Primary Language**: PHP - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: http://www.lingducode.cn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LingDuCodePHP 框架特性文档 - 修复版,升级优化安全策略,修复各种BUG和安全漏洞! > 版本:2.0.1 | 永久性免费开源·支持个企商业使用 > 官网:http://lingducode.cn > 许可证:Apache License 2.0 --- ## 一、框架概述 LingDuCodePHP 是一款基于 PHP 8.0+ 的企业级 MVC 开发框架,采用零依赖设计,所有核心组件自研实现。框架以安全、高性能、易扩展为核心设计理念,内置丰富的企业级功能模块,适用于中大型 Web 应用、API 服务、后台管理系统等场景。 ### 核心设计原则 - **零依赖** — 无 Composer 依赖,所有核心组件自研,部署零门槛 - **安全优先** — 全链路安全防护,从请求到响应的每个环节均有安全机制 - **模块化架构** — 模块/插件双扩展体系,功能即插即用 - **多驱动支持** — 缓存、队列、数据库、短信、存储等均支持多驱动切换 - **生产就绪** — 内置熔断、限流、链路追踪、健康检查等微服务治理能力 --- ## 二、系统要求 | 项目 | 要求 | |------|------| | PHP 版本 | >= 8.0 | | PDO 扩展 | 必须(pdo_mysql) | | MBString 扩展 | 必须 | | cURL 扩展 | 必须 | | OpenSSL 扩展 | 必须 | | FileInfo 扩展 | 必须 | | GD 扩展 | 必须 | | 数据库 | MySQL 5.7+ / PostgreSQL / SQLite / SQL Server | --- ## 三、目录结构 ``` LingDuCodePHP/ ├── app/ # 应用目录 │ ├── admin/ # 后台管理模块 │ │ ├── controller/ # 控制器 │ │ ├── middleware/ # 中间件 │ │ └── view/ # 视图模板 │ ├── api/ # API 接口模块 │ │ ├── controller/ │ │ └── middleware/ │ ├── common/ # 公共模块 │ │ ├── controller/ │ │ ├── model/ │ │ ├── validate/ │ │ └── trait/ │ ├── index/ # 前台模块 │ ├── install/ # 安装向导 │ ├── user/ # 用户中心模块 │ └── providers/ # 服务提供者 ├── config/ # 配置文件 │ ├── app.php # 应用配置 │ ├── database.php # 数据库配置 │ ├── cache.php # 缓存配置 │ ├── route.php # 路由配置 │ ├── mail.php # 邮件配置 │ ├── sms.php # 短信配置 │ ├── upload.php # 上传配置 │ ├── auth.php # 实名认证配置 │ ├── log.php # 日志配置 │ └── session.php # 会话配置 ├── framework/ # 框架核心 │ ├── core/ # 核心组件 │ ├── db/ # 数据库层 │ ├── cache/ # 缓存驱动 │ ├── queue/ # 队列驱动 │ ├── rate/ # 限流算法 │ ├── circuit/ # 熔断器 │ ├── oauth/ # OAuth 登录 │ ├── payment/ # 支付集成 │ ├── mail/ # 邮件驱动 │ ├── sms/ # 短信驱动 │ ├── auth/ # 实名认证 │ ├── filesystem/ # 文件存储 │ ├── template/ # 模板引擎 │ ├── captcha/ # 验证码 │ ├── crypt/ # 加密组件 │ ├── cookie/ # Cookie 管理 │ ├── session/ # 会话管理 │ ├── pagination/ # 分页组件 │ ├── upload/ # 文件上传 │ ├── notify/ # 通知组件 │ ├── websocket/ # WebSocket │ ├── pdf/ # PDF 生成 │ ├── excel/ # Excel 处理 │ ├── trace/ # 链路追踪 │ ├── health/ # 健康检查 │ ├── monitor/ # 性能监控 │ ├── apidoc/ # API 文档生成 │ ├── api/ # API 资源 │ ├── console/ # 命令行工具 │ ├── plugin/ # 插件管理 │ ├── module/ # 模块管理 │ ├── schedule/ # 任务调度 │ ├── testing/ # 测试组件 │ ├── exception/ # 异常类 │ └── helpers.php # 全局辅助函数 ├── lang/ # 语言包 │ ├── zh-cn/ │ └── en/ ├── public/ # Web 根目录 │ ├── assets/ # 静态资源 │ ├── admin.php # 后台入口 │ ├── api.php # API 入口 │ └── bootstrap.php # 引导文件 ├── lingdu.php # 命令行入口 └── .env.example # 环境变量示例 ``` --- ## 四、核心组件 ### 4.1 MVC 架构 | 组件 | 类 | 说明 | |------|-----|------| | 控制器 | `framework\core\Controller` | 基础控制器,提供请求分发、视图渲染、CSRF 验证 | | 模型 | `framework\core\Model` | ORM 模型,支持时间戳、软删除、类型转换、关联关系 | | 视图 | `framework\core\View` | 模板渲染引擎 | | 请求 | `framework\core\Request` | HTTP 请求封装,支持参数获取、文件上传、IP 解析 | | 响应 | `framework\core\Response` | HTTP 响应封装,支持 JSON/重定向/流式输出 | ### 4.2 依赖注入容器 `framework\core\Container` — 支持: - 自动依赖注入(构造函数 + 方法注入) - 接口绑定实现 - 单例绑定 - **ReflectionUnionType** 处理(PHP 8 联合类型) - **循环依赖检测**(在 `resolve()` 入口检测,避免无限递归) ```php $container = new Container(); $container->bind(RepositoryInterface::class, RedisRepository::class); $instance = $container->make(RepositoryInterface::class); ``` ### 4.3 路由系统 `framework\core\Route` — 支持: - GET / POST / PUT / DELETE / PATCH / ANY 注册 - 路由分组与中间件分配 - RESTful 资源路由 - 路径参数提取(`{id}` 语法) - **路由缓存**(`RouteCache` 编译缓存,避免每次请求重新解析) - 正则路由编译(`preg_quote` 安全转义) ```php Route::get('/user/{id}', 'user.User/info'); Route::post('/user/create', 'user.User/create'); Route::group(['middleware' => 'auth'], function() { Route::get('/dashboard', 'admin.Index/index'); }); ``` ### 4.4 数据库与 ORM **连接管理** `framework\db\ConnectionManager` - 多数据库支持:MySQL / PostgreSQL / SQLite / SQL Server - 读写分离:配置 `read` / `write` 主机 - 集群模式:多读主机负载均衡 - 连接池管理,最大连接数限制 - **SQLite 路径遍历防护** **查询构建器** `framework\db\Builder` - 链式调用:`where` / `orWhere` / `whereIn` / `join` / `order` / `limit` - 聚合查询:`count` / `sum` / `avg` / `max` / `min` - 事务支持:`startTrans` / `commit` / `rollback` - 参数化查询,防 SQL 注入 - **表名/字段名反引号转义**(`str_replace('`', '``')`) **ORM 模型** `framework\core\Model` - 自动时间戳(`createtime` / `updatetime`) - 软删除(`deletetime`) - 类型转换(`$casts`) - 批量赋值保护(`$fillable` / `$guarded`) - 字段隐藏(`$hidden`,如 `password`) - 数据获取器/修改器 - 关联关系:`hasOne` / `hasMany` / `belongsTo` / `belongsToMany` - `inc()` / `dec()` 原子操作(检查主键存在性) - `toArray()` 递归处理关联模型 **数据库迁移** `framework\db\Migration` - Schema Builder:`createTable` / `addColumn` / `addIndex` - 字段类型:`string` / `integer` / `bigInteger` / `decimal` / `text` / `datetime` / `enum` 等 - 迁移回滚与重置 - **列名/索引名反引号安全转义** ### 4.5 缓存系统 `framework\core\Cache` — 门面类,通过 `Cache::store()` 获取驱动实例。 **支持驱动:** | 驱动 | 类 | 特性 | |------|-----|------| | File | `framework\cache\File` | 文件缓存,支持 TTL、文件锁、目录自动创建 | | Redis | `framework\cache\Redis` | 类型前缀序列化(`i:`/`f:`/`b:`),保持浮点/布尔精度 | | Memcache | `framework\cache\Memcache` | inc/dec 安全处理序列化值 | | Memcached | `framework\cache\Memcached` | inc/dec 安全处理序列化值,`array_key_exists` 支持 null | | APCu | `framework\cache\Apcu` | 本地内存缓存,`apcu_store` 返回值校验 | **统一接口** `CacheInterface`:`get` / `set` / `delete` / `has` / `inc` / `dec` / `getMultiple` / `setMultiple` ### 4.6 验证器 `framework\core\Validator` — 支持: - 内置规则:`required` / `email` / `mobile` / `url` / `ip` / `integer` / `numeric` / `min` / `max` / `between` / `date` / `dateFormat` / `in` / `notIn` / `regex` / `confirmed` / `same` / `different` / `unique` - 自定义规则与消息 - 场景验证 - **`validated()` 支持点号规则**(如 `user.email`),构建嵌套数据结构 - 验证异常 `ValidationException` ```php $validator = new Validator($data, [ 'username' => 'required|alpha_num|min:4|max:20', 'email' => 'required|email|unique:user', 'password' => 'required|min:6|confirmed', ]); if ($validator->fails()) { $errors = $validator->errors(); } $validData = $validator->validated(); ``` --- ## 五、安全体系 ### 5.1 安全组件 `framework\core\Security` — 全局安全工具类: | 方法 | 功能 | |------|------| | `hashPassword()` | 密码哈希(bcrypt,自动加盐) | | `verifyPassword()` | 密码验证(`hash_equals` 防时序攻击) | | `generateToken()` | CSRF Token 生成(`random_bytes`) | | `verifyCsrfToken()` | CSRF Token 验证(`hash_equals`) | | `xssClean()` | XSS 过滤(`htmlspecialchars` + 实体编码) | | `encrypt()` / `decrypt()` | AES-256-GCM 对称加密 | ### 5.2 CSRF 防护 - 表单自动注入 `_token` 隐藏域 - AJAX 请求通过 `X-CSRF-TOKEN` Header 传递 - 支持豁免路由配置 - Token 一次性使用,验证后即销毁 ### 5.3 会话安全 - **Session ID 48位**,每字符6位熵值 - `use_strict_mode` 防止会话固定攻击 - `use_only_cookies` 禁止 URL 传递 Session ID - `cookie_httponly` 禁止 JavaScript 访问 - `cookie_samesite=Lax` 防 CSRF - 登录后 `session_regenerate_id(true)` 重新生成 ID - 空闲超时 + 绝对超时双重过期机制 ### 5.4 Cookie 安全 `framework\cookie\Cookie` — 支持: - **Encrypt-then-MAC** 模式(先加密后签名,防篡改) - 解密失败返回默认值,不抛异常 - `httponly` / `secure` / `samesite` 属性 ### 5.5 加密组件 `framework\crypt\Crypt` — 支持: - AES-256-GCM 认证加密 - PBKDF2 密钥派生 - 数组加密/解密(`encryptArray` / `decryptArray`) - 密钥与 MAC 密钥分离 ### 5.6 文件上传安全 `framework\upload\Upload` — 多层防护: - 文件扩展名白名单 - 危险扩展名黑名单(php/phar/exe/asp/jsp/svg 等 30+ 种) - MIME 类型校验 - 文件内容检测 - **路径遍历防护**(`/\.{2,}/` 正则 + `realpath` 校验) - 文件名随机化 + SHA1 哈希校验 - 自动子目录(按日期 `Y/m/d`) ### 5.7 重定向安全 - 相对路径验证(`/` 开头且非 `//`) - 绝对路径主机白名单(`app.allowed_hosts` 或 `app.url` 配置) - **禁止 `$_SERVER['HTTP_HOST']` 直接使用**,防主机头注入 --- ## 六、队列系统 `framework\core\Queue` — 统一队列管理,支持多驱动: | 驱动 | 类 | 特性 | |------|-----|------| | Database | `framework\queue\DatabaseQueue` | 数据库表存储,零依赖 | | Redis | `framework\queue\RedisQueue` | Redis List + Sorted Set,支持延迟队列 | | RabbitMQ | `framework\queue\RabbitMQQueue` | AMQP 协议,DLX 死信队列,消息确认 | | Kafka | `framework\queue\KafkaQueue` | Kafka 消费者组,rebalance 回调,nack 重试 | **通用特性:** - `work()` 守护进程模式,支持 `pcntl` 信号处理 - 内存使用监控,超限自动重启 - 任务失败重试与错误日志 - 延迟队列支持 ```php Queue::push('SendEmailJob', ['email' => 'user@example.com']); Queue::later(60, 'ProcessDataJob', ['id' => 123]); // 延迟60秒 ``` --- ## 七、限流与熔断 ### 7.1 限流算法 `framework\rate\RateLimiter` — 四种算法可选: | 算法 | 类 | 适用场景 | |------|-----|---------| | 固定窗口 | `framework\rate\FixedWindow` | 简单限流,精度要求低 | | 滑动窗口 | `framework\rate\SlidingWindow` | 精确限流,无边界突发 | | 令牌桶 | `framework\rate\TokenBucket` | 允许突发流量,平均速率控制 | | 漏桶 | `framework\rate\LeakyBucket` | 严格恒定速率输出 | 统一接口 `RateLimiterInterface`:`attempt()` / `hits()` / `available()` / `remaining()` / `clear()` / `availableIn()` ### 7.2 熔断器 `framework\circuit\CircuitBreaker` — 三态模型: - **Closed(关闭)** — 正常请求,统计失败率 - **Open(打开)** — 快速失败,不执行请求 - **Half-Open(半开)** — 探测恢复,允许少量请求 配置项:失败阈值、恢复时间、探测请求数。`CircuitBreakerManager` 管理多个熔断器实例。 --- ## 八、OAuth 第三方登录 `framework\oauth` — 支持: | 平台 | 类 | 特性 | |------|-----|------| | 微信 | `WechatOAuth` | 网页授权,获取 openid/用户信息 | | QQ | `QQOAuth` | OAuth 2.0,回调参数安全校验 | | GitHub | `GitHubOAuth` | OAuth 2.0 标准流程 | | 微博 | `WeiboOAuth` | OAuth 2.0 标准流程 | **安全特性:** - **强制 state 参数**,防 CSRF 攻击 - 回调校验 `strpos` 返回值,防逻辑绕过 - Access Token 安全存储 --- ## 九、支付集成 `framework\payment` — 支持: | 平台 | 类 | 特性 | |------|-----|------| | 支付宝 | `Alipay` | RSA2 签名/验签,异步通知,沙箱模式 | | 微信支付 | `WechatPay` | HMAC-SHA256 签名,XML/JSON 双格式,企业付款 | **安全特性:** - **防重放攻击**(缓存幂等性校验) - 金额验证(`bccomp` 精确比较) - 异步通知签名验证 - XML 解析禁用外部实体(`LIBXML_NOENT` 已移除,`LIBXML_NONET` 启用) - 请求体大小限制 --- ## 十、邮件与短信 ### 10.1 邮件 `framework\mail` — 支持: | 组件 | 说明 | |------|------| | `Mailer` | 链式调用:`to()` / `subject()` / `body()` / `send()` | | `Smtp` | SMTP 协议驱动,支持 SSL/TLS 加密 | | `MailDriver` | 基础驱动,地址格式校验,`<>` 字符转义 | **安全特性:** - TLS 握手验证 - SMTP 状态重置(`finally` 块中 `reset()`) - CRLF 注入防护 ### 10.2 短信 `framework\sms` — 支持: | 驱动 | 类 | 说明 | |------|-----|------| | 阿里云 | `Aliyun` | 阿里云短信服务 | | 腾讯云 | `Tencent` | 腾讯云短信服务 | | 短信宝 | `Smsbao` | 短信宝服务 | 统一接口 `SmsInterface`,通过 `Sms` 门面类调用。 --- ## 十一、文件存储 `framework\filesystem` — 支持: | 驱动 | 类 | 说明 | |------|-----|------| | 本地 | `LocalFilesystem` | 本地文件系统 | | 阿里云 OSS | `AliyunOss` | 阿里云对象存储 | | 腾讯云 COS | `TencentCos` | 腾讯云对象存储,HEAD 请求获取元数据 | | 七牛云 | `QiniuStorage` | 七牛云对象存储,全 HTTPS | 统一接口 `FilesystemInterface`:`put` / `get` / `delete` / `exists` / `size` / `lastModified` / `mimeType` / `url` --- ## 十二、模板引擎 `framework\template\Engine` — 自研轻量模板引擎: | 标签 | 语法 | 说明 | |------|------|------| | 变量输出 | `{$var}` | 自动 HTML 转义 | | 条件判断 | `{if}...{elseif}...{else}...{/if}` | 条件分支 | | 循环遍历 | `{foreach $list as $item}...{/foreach}` | 数组遍历 | | 模板继承 | `{extend name='layout' /}` | 布局继承 | | 模板块 | `{block name='content'}...{/block}` | 内容区块 | | 包含文件 | `{include file='header' /}` | 子模板引入 | | 原始输出 | `{$var|raw}` | 不转义输出 | | 函数调用 | `{$var|date='Y-m-d'}` | 变量函数处理 | **安全特性:** - 默认 HTML 转义防 XSS - `switch/case` 使用回调白名单防代码注入 - 变量名白名单校验 - `allow_php_tag` 默认关闭 --- ## 十三、验证码 | 类型 | 类 | 说明 | |------|-----|------| | 图形验证码 | `framework\captcha\Captcha` | 随机字符 + 干扰线/噪点,`hash_equals` 验证 | | 滑动验证码 | `framework\captcha\SliderCaptcha` | 滑块拼图验证,容差范围校验 | **安全特性:** - 验证码一次性使用,验证后立即销毁 - 验证码有效期限制 - `hash_equals` 防时序攻击 --- ## 十四、实名认证 `framework\auth` — 支持: | 驱动 | 类 | 说明 | |------|-----|------| | 阿里云 | `AliyunAuth` | 身份证二要素/三要素/人脸比对 | | 腾讯云 | `TencentAuth` | 身份证核验 | 统一接口 `AuthInterface`:`verifyIdCard` / `verifyIdCardAndName` / `verifyIdCardNamePhoto` **安全特性:** - 所有验证请求使用 **POST 方法**(保护 PII 数据) - 15位身份证号支持 - 身份证号脱敏显示 --- ## 十五、WebSocket `framework\websocket` — 支持: | 组件 | 类 | 说明 | |------|-----|------| | 服务端 | `SocketServer` | TCP Socket 服务器,WebSocket 协议握手/帧编解码 | | 驱动 | `WebSocketDriver` | 驱动抽象 | | 接口 | `WebSocketInterface` | 统一接口 | **功能:** - WebSocket 协议握手(Sec-WebSocket-Key/Accept) - 帧编码/解码(RFC 6455) - 频道订阅/退订/广播 - 客户端管理 --- ## 十六、链路追踪 `framework\trace` — 分布式链路追踪: | 组件 | 类 | 说明 | |------|-----|------| | 追踪器 | `Tracer` | Span 栈管理,traceId/spanId 生成 | | 跨度 | `Span` | 操作名、时间、状态、标签 | | 中间件 | `TraceMiddleware` | 自动注入/提取 traceId | | 存储 | `TraceStorage` | Redis 存储,SCAN 查询,`LOCK_EX` 写入 | --- ## 十七、健康检查 `framework\health\HealthCheck` — 支持检查项: - 磁盘空间(`disk_total_space` / `disk_free_space`) - 数据库连接(`Db::query('SELECT 1')`) - 缓存读写(`Cache::store()` set/get/delete 循环) - PHP 版本与扩展 - 内存使用 --- ## 十八、任务调度 `framework\schedule\ScheduleManager` — 支持: - Cron 表达式调度(5位标准格式) - 频率快捷方法:`everyMinute()` / `hourly()` / `daily()` / `weekly()` / `monthly()` - 定时执行:`dailyAt('08:30')` / `hourlyAt(15)` - 命令调度 / 回调调度 / Shell 执行 - 守护进程模式(`startDaemon()` / `stopDaemon()`) - 任务重叠保护(`withoutOverlapping()`) - 超时控制(`timeout()`) --- ## 十九、命令行工具 `lingdu.php` — 内置 30+ 命令: ### 代码生成 | 命令 | 说明 | |------|------| | `make:controller` | 创建控制器 | | `make:model` | 创建模型 | | `make:middleware` | 创建中间件 | | `make:validator` | 创建验证器 | | `make:command` | 创建命令 | | `make:migration` | 创建迁移文件 | | `make:module` | 创建模块 | | `make:plugin` | 创建插件 | | `scaffold` | 根据数据库表生成 CRUD 代码 | ### 数据库 | 命令 | 说明 | |------|------| | `migrate` | 执行数据库迁移 | | `migrate:rollback` | 回滚迁移 | | `migrate:refresh` | 重置并重新迁移 | | `migrate:status` | 查看迁移状态 | | `db:seed` | 填充数据库 | ### 缓存 | 命令 | 说明 | |------|------| | `cache:clear` | 清除所有缓存 | | `cache:config` / `config:cache` | 缓存配置文件 | | `config:clear` | 清除配置缓存 | | `cache:route` / `route:cache` | 缓存路由 | | `route:clear` | 清除路由缓存 | | `route:list` | 显示所有路由 | ### 插件与模块 | 命令 | 说明 | |------|------| | `plugin:install` | 安装插件 | | `plugin:uninstall` | 卸载插件 | | `plugin:list` | 显示所有插件 | | `plugin:enable` / `plugin:disable` | 启用/禁用插件 | | `module:list` | 显示所有模块 | | `module:delete` | 删除模块 | ### 运行时 | 命令 | 说明 | |------|------| | `queue:work` | 启动队列工作进程 | | `schedule:run` | 运行任务调度 | | `test` | 运行测试 | | `version` | 显示框架版本 | | `help` | 显示帮助信息 | --- ## 二十、插件与模块体系 ### 插件管理 `framework\plugin\PluginManager` - 安装/卸载/启用/禁用插件 - 插件配置管理 - 插件路径获取 - **`validateName()` 防路径遍历** - **`CURLOPT_FOLLOWLOCATION=false` 防 SSRF** ### 模块管理 `framework\module\ModuleManager` - 创建/删除/启用/禁用模块 - 模块目录结构自动生成 - **`validateName()` 防路径遍历** --- ## 二十一、其他组件 ### 21.1 分页 `framework\pagination\Paginator` — 支持: - 页码参数安全校验(`perPage` 限制 1-100) - 简洁分页 / 完整分页 - API 分页 JSON 响应 ### 21.2 通知 `framework\notify` | 组件 | 说明 | |------|------| | `Notify` | 通知发送,支持批量(每收件人独立主题) | | `VerifyCode` | 验证码发送/验证,尝试次数限制,自动过期 | ### 21.3 API 资源 `framework\api\JsonResource` — RESTful API 响应格式化: - 数据转换与字段筛选 - 分页元数据 - CRLF 过滤(`strtok`) ### 21.4 PDF 生成 `framework\pdf\Pdf` — 支持: - HTML 转 PDF - wkhtmltopdf 外部工具 / 内置 TcpdfGenerator 双引擎 - 页面尺寸/方向/边距配置 - **保存路径白名单**(仅允许 runtime / uploads 目录) ### 21.5 Excel 处理 `framework\excel\Excel` — Excel 文件读写 ### 21.6 API 文档生成 `framework\apidoc\ApiDocGenerator` — 自动生成 API 文档: - 扫描控制器注释(`@api` / `@apiParam` / `@apiSuccess`) - 生成单页 HTML 文档 - **XSS 防护**(`escapeHtml()` JavaScript 函数 + `JSON_HEX_TAG`) ### 21.7 性能监控 `framework\monitor\PerformanceMonitor` — 运行时性能数据采集 ### 21.8 国际化 `framework\core\Lang` — 多语言支持: - 语言包文件(`lang/zh-cn/common.php` / `lang/en/common.php`) - 自动语言检测 - 回退语言 ### 21.9 事件系统 `framework\core\Event` — 观察者模式: - 事件监听注册 - 字符串类名 / 闭包 / `__invoke` 支持 - 事件优先级 - **无 `handle` 方法的类名监听器安全跳过** ### 21.10 服务提供者 `framework\core\ServiceProvider` — 服务注册与延迟加载 ### 21.11 门面模式 `framework\core\Facade` — 静态代理,简化组件调用: ```php Cache::store()->get('key'); Db::name('user')->where('id', 1)->find(); Log::info('message'); Config::get('app.name'); ``` --- ## 二十二、异常体系 `framework\exception` — 细粒度异常分类: | 异常类 | 说明 | |--------|------| | `AuthException` | 认证异常(401) | | `ForbiddenException` | 授权异常(403) | | `ValidationException` | 验证异常(422) | | `CsrfException` | CSRF 验证失败(419) | | `ThrottleException` | 限流异常(429) | | `DatabaseConnectionException` | 数据库连接异常 | | `FileUploadException` | 文件上传异常 | | `ModelNotFoundException` | 模型未找到 | | `SecurityException` | 安全异常 | | `BusinessException` | 业务逻辑异常 | 全局异常处理器 `framework\core\ExceptionHandler` 统一捕获与响应。 --- ## 二十三、辅助函数 `framework\helpers.php` — 全局便捷函数: | 函数 | 说明 | |------|------| | `env($key, $default)` | 获取环境变量 | | `config($key, $default)` | 获取配置值 | | `cache($key, $default)` | 缓存快捷操作 | | `session($key, $value)` | Session 快捷操作 | | `redirect($url)` | HTTP 重定向(防 `//` 协议相对 URL) | | `json($data, $code)` | JSON 响应 | | `root_path($path)` | 项目根目录 | | `app_path($path)` | 应用目录 | | `runtime_path($path)` | 运行时目录 | | `public_path($path)` | 公共目录 | | `database_path($path)` | 数据库目录 | | `format_bytes($bytes)` | 字节格式化 | --- ## 二十四、安装向导 `app\install` — 可视化安装: 1. **环境检测** — PHP 版本、扩展、目录权限 2. **数据库配置** — 主机/端口/数据库名/用户名/密码(正则校验,反引号转义) 3. **执行安装** — SQL 文件导入(事务包裹)、管理员创建、配置文件写入 4. **安全加固** — 生成 `install.lock`、创建 `.htaccess` 禁止访问安装目录、生成 `.env.example` --- ## 二十五、环境变量 `.env` 文件支持,关键配置项: ```env APP_ENV=production APP_DEBUG=false APP_KEY=your-32-char-secret-key DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=lingdu DB_USERNAME=root DB_PASSWORD= DB_PREFIX=ld_ CACHE_DRIVER=redis QUEUE_DRIVER=database MAIL_DRIVER=smtp MAIL_HOST=smtp.example.com MAIL_PORT=465 MAIL_ENCRYPTION=ssl SMS_DRIVER=aliyun ``` 所有敏感配置均通过 `env()` 函数读取,支持默认值。 --- ## 二十六、内置应用模块 | 模块 | 入口 | 说明 | |------|------|------| | 后台管理 | `admin.php` | 管理员登录、RBAC 权限、系统配置、附件管理 | | 用户中心 | `user.php` | 用户注册/登录、个人资料、密码修改、邮箱/手机绑定 | | API 接口 | `api.php` | RESTful API,Token 认证,限流,CORS | | 前台首页 | `index.php` | 前台展示 | | 安装向导 | `install.php` | 系统安装 | ### RBAC 权限管理 - 管理员分组(`auth_group`) - 权限规则树(`auth_rule`) - 超级管理员(`is_super`)跳过权限检查 - 规则支持 `*` 通配符(全部权限) --- ## 二十七、技术亮点总结 | 维度 | 亮点 | |------|------| | 安全 | CSRF / XSS / SQL注入 / 路径遍历 / 主机头注入 / 时序攻击 / 重放攻击 / SSRF 全链路防护 | | 性能 | 路由缓存 / 配置缓存 / OPcache 友好 / 连接池 / 原子操作 | | 可靠性 | 熔断器 / 限流 / 队列重试 / 事务保护 / 健康检查 | | 可观测 | 链路追踪 / 性能监控 / 结构化日志(RFC 5424 全8级别) | | 扩展性 | 插件体系 / 模块体系 / 多驱动架构 / 服务提供者 / 事件系统 | | 开发体验 | Scaffold 脚手架 / API 文档自动生成 / 命令行工具 / 安装向导 |