Search by

youvision / think-version

indiboy-create

ThinkPHP 8 运行环境体检组件:查看框架版本与已安装的 Composer 依赖包。

Package info

github.com/indiboy-create/think-version

pkg:composer/youvision/think-version

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-12 14:25 UTC

This package is auto-updated.

Last update: 2026-11-12 14:29:55 UTC


README

面向 ThinkPHP 的开源工程索引:组件、框架、服务与发布工具,按能力组织,持续整理。

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