fix(autoload): canary DomainModel after Composer load

Stale vendor/ after the PSR-4 cutover omits AKSRT\ from
autoload_psr4, so helpers fatal on DomainModel constants.
Fail loud with composer install/dump-autoload guidance and
document the deploy step in README + ADR.
This commit is contained in:
2026-07-17 19:30:53 +08:00
parent d48cdac28c
commit 34b7aa7a91
3 changed files with 57 additions and 6 deletions
+36 -2
View File
@@ -94,14 +94,48 @@ AKSRT-theme/
## 安装方式
主题类型(`AKSRT\…`)通过 Composer PSR-4 从 `src/AKSRT/` 自动加载;`vendor/` 不进 Git。**部署或更新主题后必须在主题根目录生成 autoload**,否则会出现 `Class "AKSRT\Core\DomainModel" not found` 等致命错误。
### 前置:Composer(必做)
在主题目录(含 `composer.json` 的那一层)执行:
```bash
# 首次或依赖变更后(安装第三方库 + 生成主题 PSR-4)
composer install --no-dev --optimize-autoloader
# 仅 composer.json autoload 映射变更时(无需重下包)
composer dump-autoload -o
```
确认:
```bash
php -r "require 'vendor/autoload.php'; echo class_exists('AKSRT\\\\Core\\\\DomainModel') ? \"ok\\n\" : \"missing\\n\";"
```
应输出 `ok`。若 PHP 开启了 OPcache,重载 php-fpm / 重启 PHP 后再访问站点。
### 方式一:直接上传(推荐)
1. 将整个 `AKSRT-theme` 文件夹上传到 `wp-content/themes/`
2. WordPress 后台 → **外观** → **主题** → 找到 **AKSRT** → **激活**
2. 在服务器主题目录执行上一节的 `composer install`(若打包时已带上完整 `vendor/` 且已 `dump-autoload`,可跳过)
3. WordPress 后台 → **外观** → **主题** → 找到 **AKSRT** → **激活**
### 方式二:ZIP 打包上传
压缩为 `.zip` 后通过 WordPress 后台上传。
压缩为 `.zip` 后通过 WordPress 后台上传;上传后同样需要在服务器主题目录生成/校验 Composer autoload(见上)。
### 生产急救(已白屏 / DomainModel not found)
SSH 进入主题目录后:
```bash
cd /path/to/wp-content/themes/AKsrt-theme # 以实际路径为准
composer install --no-dev --optimize-autoloader
# 或仅刷新映射:composer dump-autoload -o
# 可选:reload php-fpm / 清 OPcache
```
---