youvision / think-version
ThinkPHP 8 运行环境体检组件:查看框架版本与已安装的 Composer 依赖包。
v1.0.0
2026-11-12 14:25 UTC
Requires
- php: >=8.0
- topthink/framework: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.6 || ^10.5
- topthink/think-view: ^2.0
Suggests
- topthink/think-view: ThinkPHP 8 项目已内置该视图包,本包使用其渲染视图,不会随包自动安装
Provides
None
Conflicts
None
Replaces
None
README
面向 ThinkPHP 的开源工程索引:组件、框架、服务与发布工具,按能力组织,持续整理。
- 仓库地址:https://github.com/indiboy-create/ThinkPHP-PanGu/
- 在线站点:https://indiboy-create.github.io/ThinkPHP-PanGu/
youvision/think-version
ThinkPHP 8 运行环境体检组件。
安装后自动注册两个接口,分别查看 ThinkPHP 版本号 与 已安装的 Composer 依赖包,并提供配套的可视化视图。
特性
- 版本速览:展示 ThinkPHP 框架版本(Composer 版本与
think\App::VERSION常量)、PHP 版本、SAPI、扩展清单、项目与应用运行时信息 - 依赖清单:列出根包
composer.json中require的全部依赖,包含要求版本、已安装版本、类型、许可证与源码地址 - 两条路由:服务启动时自动注册
/version/version、/version/packages,可通过配置关闭或改前缀 - 双格式输出:默认渲染视图页面,附加
?format=json即返回结构化 JSON,便于对接监控脚本 - 依赖为零:仅依赖
topthink/framework,不引入额外扩展
环境要求
- PHP >= 8.0
- ThinkPHP 8(
topthink/framework ^8.0) - 视图渲染需要
topthink/think-view(ThinkPHP 8 项目已内置)
安装
composer require youvision/think-version
服务通过 Composer 的 extra.think.services 声明。若项目配置了 service:discover,安装后会自动注册;也可手动执行:
php think service:discover
若项目不使用服务发现,可在应用的服务提供者中手动注册:
$app->register(\Youvision\ThinkVersion\Service::class);
接口说明
安装完成后可直接访问以下两个接口(默认前缀 version,可在配置中修改):
| 访问路径 | 说明 | 视图 |
|---|---|---|
/version/version |
ThinkPHP 版本号与运行环境 | 版本速览 |
/version/packages |
根包 require 的全部依赖包 | 依赖清单 |
两个接口同时支持 ?format=json,返回与视图一致的结构化数据:
curl "http://127.0.0.1:8000/version/version?format=json"
{
"framework": {
"name": "topthink/framework",
"version": "v8.1.4",
"constant": "8.0.0",
"repo": "https://gitee.com/top-think/framework"
},
"php": { "version": "8.3.26", "sapi": "cli-server" }
}
配置
配置文件为 config/version.php。包内已通过 extra.think.config 声明该配置文件,执行以下命令即可复制到项目的 config 目录进行覆盖:
php think vendor:publish
ThinkPHP 8 的
vendor:publish会复制所有已安装包的配置,已存在的文件默认不覆盖,需要覆盖时加--force参数。
| 配置项 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
组件总开关,关闭后不再注册任何路由 |
route_prefix |
version |
路由前缀,最终地址为 /{前缀}/version 等 |
route_middleware |
[] |
路由中间件,可用于登录鉴权 |
include_dev_requirements |
false |
是否一并列出 require-dev 依赖 |
repository.host |
https://gitee.com |
官方仓库站点 |
repository.repo |
top-think/framework |
仓库标识 |
为路由加上鉴权中间件:
// config/version.php 'route_middleware' => ['app\middleware\Auth'],
视图
视图位于包的 view/version/ 目录,包含 layout.html(公共布局)、version.html、packages.html。
- 渲染时临时把模板目录指向包内
view目录,渲染完成后立即还原,不会影响应用自身的视图路径 - 需要覆盖样式或结构时,可把同名模板复制到项目的
view/version/目录下,ThinkPHP 会优先使用应用模板 - 模板输出默认经过
htmlentities转义,文件路径等外部输入不会造成注入
直接使用
use Youvision\ThinkVersion\Facade\Version; // 框架版本信息 $version = Version::version(); // 依赖包列表(第二个参数为 true 时包含 require-dev) $packages = Version::packages();
也可以通过容器直接注入:
$version = app()->make(\Youvision\ThinkVersion\Version::class);
测试
composer install vendor/bin/phpunit
若本机无法访问 Composer 源,可指定其他项目的 vendor 目录来运行测试:
VERSION_TEST_AUTOLOAD=/path/to/vendor/autoload.php vendor/bin/phpunit
License
MIT