Files
static-php-cli/assets/zh_develop_structure.md.EpUhxfrR.js

64 lines
10 KiB
JavaScript
Raw Normal View History

import{_ as s,c as a,o as p,aj as e}from"./chunks/framework.C2AwuPrQ.js";const h=JSON.parse('{"title":"项目结构","description":"","frontmatter":{},"headers":[],"relativePath":"zh/develop/structure.md","filePath":"zh/develop/structure.md"}'),l={name:"zh/develop/structure.md"};function i(c,n,t,o,r,d){return p(),a("div",null,[...n[0]||(n[0]=[e(`<h1 id="项目结构" tabindex="-1">项目结构 <a class="header-anchor" href="#项目结构" aria-label="Permalink to “项目结构”"></a></h1><h2 id="概念" tabindex="-1">概念 <a class="header-anchor" href="#概念" aria-label="Permalink to “概念”"></a></h2><p>StaticPHP 本身是一个基于 <code>symfony/console</code> 的 CLI 应用,核心代码位于 <code>src/StaticPHP</code> 目录下。 它主要分为几个模块:</p><ul><li><strong>Registry</strong>负责管理注册表数据每个注册表含有多个包PackageStaticPHP 项目本身内置一个 <code>core</code> 注册表,包含 PHP 及相关扩展、依赖等。</li><li><strong>Package</strong>:代表一个包,包的种类有四种:<code>php-extension</code>PHP 扩展)、<code>library</code>(库)、<code>target</code>(构建目标)、<code>virtual-target</code>(虚构建目标)。每个包包含构建信息、依赖关系等。</li><li><strong>Installer/Builder</strong>:负责处理包的安装和构建逻辑,调用构建命令、解压构建产物、处理构建结果等。</li><li><strong>Doctor</strong>:提供系统环境检查功能,负责安装和检查系统层面依赖的工具、需要的文件等,如 <code>make</code>、<code>cmake</code>、<code>autoconf</code> 等。</li><li><strong>Runtime/Executor</strong>:包含运行时相关的工具类,如执行 shell 命令、执行 CMake 构建等。</li><li><strong>Toolchain</strong>:对不同操作系统及环境,提供对应系统的工具链抽象接口,负责处理构建过程中与系统环境相关的差异。</li><li><strong>Utils</strong>:一些通用的工具类,如文件系统操作、日志记录、操作系统相关助手方法等。</li><li><strong>DependencyResolver</strong>:负责解析包之间的依赖关系,生成构建顺序等。</li></ul><h2 id="目录结构" tabindex="-1">目录结构 <a class="header-anchor" href="#目录结构" aria-label="Permalink to “目录结构”"></a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span>static-php-cli/</span></span>
<span class="line"><span> bin/ # 可执行入口脚本spcspc.ps1setup-runtime </span></span>
<span class="line"><span> config/</span></span>
<span class="line"><span> env.ini # 默认环境变量配置</span></span>
<span class="line"><span> env.custom.ini # 用户自定义环境变量覆盖 env.ini</span></span>
<span class="line"><span> artifact/ # 构建产物配置下载工具链预构建二进制等</span></span>
<span class="line"><span> pkg/ # 包配置文件YAML</span></span>
<span class="line"><span> ext/ # PHP 扩展包配置ext-*.ymlbuiltin-extensions.yml</span></span>
<span class="line"><span> lib/ # 库包配置*.yml</span></span>
<span class="line"><span> target/ # 构建目标配置php.ymlcurl.yml </span></span>
<span class="line"><span> src/</span></span>
<span class="line"><span> bootstrap.php # 应用引导注册自动加载DI 容器等</span></span>
<span class="line"><span> globals/ # 全局辅助函数</span></span>
<span class="line"><span> Package/ # 各包的构建逻辑实现PHP </span></span>
<span class="line"><span> Artifact/ # 构建产物的自定义下载/解压逻辑</span></span>
<span class="line"><span> Command/ # 包级别自定义命令</span></span>
<span class="line"><span> Extension/ # PHP 扩展构建类ext-*.php</span></span>
<span class="line"><span> Library/ # 库构建类*.php</span></span>
<span class="line"><span> Target/ # 构建目标类php.phpcurl.php </span></span>
<span class="line"><span> StaticPHP/ # 框架核心代码</span></span>
<span class="line"><span> ConsoleApplication.php # Symfony Console 应用入口</span></span>
<span class="line"><span> Artifact/ # 构建产物下载与解压DownloaderExtractor </span></span>
<span class="line"><span> Attribute/ # PHP 注解定义</span></span>
<span class="line"><span> Artifact/ # 产物相关注解CustomSourceBinaryExtract </span></span>
<span class="line"><span> Doctor/ # Doctor 相关注解CheckItemFixItem </span></span>
<span class="line"><span> Package/ # 包构建相关注解BuildForBeforeStageAfterStage</span></span>
<span class="line"><span> # CustomPhpConfigureArgPatchBeforeBuild </span></span>
<span class="line"><span> Command/ # CLI 命令实现build-libsbuild-targetdoctor </span></span>
<span class="line"><span> Config/ # 配置加载与验证PackageConfigArtifactConfig </span></span>
<span class="line"><span> DI/ # 依赖注入容器ApplicationContextCallbackInvoker</span></span>
<span class="line"><span> Doctor/ # 系统环境检查与修复DoctorCheckResult</span></span>
<span class="line"><span> Exception/ # 自定义异常类</span></span>
<span class="line"><span> Package/ # 包核心模型与构建调度</span></span>
<span class="line"><span> Package.php # 包基类</span></span>
<span class="line"><span> LibraryPackage.php # 库包类型</span></span>
<span class="line"><span> PhpExtensionPackage.php # PHP 扩展包类型</span></span>
<span class="line"><span> TargetPackage.php # 构建目标包类型</span></span>
<span class="line"><span> PackageInstaller.php # 包安装器下载解压源码</span></span>
<span class="line"><span> PackageBuilder.php # 包构建器执行构建流程</span></span>
<span class="line"><span> Registry/ # 注册表管理RegistryPackageLoaderArtifactLoader</span></span>
<span class="line"><span> Runtime/ # 运行时工具</span></span>
<span class="line"><span> Executor/ # 命令执行器UnixAutoconfExecutorUnixCMakeExecutor</span></span>
<span class="line"><span> # WindowsCMakeExecutorExecutor 基类</span></span>
<span class="line"><span> Shell/ # Shell 抽象UnixShellWindowsCmd </span></span>
<span class="line"><span> SystemTarget.php # 系统目标信息</span></span>
<span class="line"><span> Toolchain/ # 工具链抽象GccNativeMuslMSVCZigClangBrew </span></span>
<span class="line"><span> Util/ # 通用工具类</span></span>
<span class="line"><span> System/ # 系统平台工具LinuxUtilMacOSUtilWindowsUtil </span></span>
<span class="line"><span> BuildRootTracker.php # buildroot 文件追踪</span></span>
<span class="line"><span> DependencyResolver.php # 依赖解析与构建顺序</span></span>
<span class="line"><span> FileSystem.php # 文件系统操作</span></span>
<span class="line"><span> GlobalEnvManager.php # 全局环境变量管理</span></span>
<span class="line"><span> InteractiveTerm.php # 交互式终端输出</span></span>
<span class="line"><span> LicenseDumper.php # 开源协议导出</span></span>
<span class="line"><span> PkgConfigUtil.php # pkg-config 工具封装</span></span>
<span class="line"><span> SourcePatcher.php # 源码补丁工具</span></span>
<span class="line"><span> SPCConfigUtil.php # SPC 配置读取工具</span></span>
<span class="line"><span> tests/ # 单元测试与集成测试</span></span>
<span class="line"><span> downloads/ # 下载缓存目录源码包预构建二进制</span></span>
<span class="line"><span> source/ # 解压后的源码目录</span></span>
<span class="line"><span> buildroot/ # 构建输出目录头文件静态库等</span></span>
<span class="line"><span> pkgroot/ # 按平台归档的构建产物</span></span>
<span class="line"><span> spc.registry.yml # core 注册表定义文件</span></span></code></pre></div><p><code>src/Package</code> <code>src/StaticPHP</code> <code>src/Package</code> <code>core</code> PHP <code>src/StaticPHP</code> </p>`,7)])])}const u=s(l,[["render",i]]);export{h as __pageData,u as default};