Skip to content

ExtensionProvisioner — 扩展生命周期编排器

  • 文件位置: kernel/Foundation/Extension/ExtensionProvisioner.php
  • 命名空间: kernel\Foundation\Extension
  • 继承自: Provisioner
  • 是否可继承: 是

用于扩展的安装 / 升级 / 升级 SQL / 清理。构造时接收插件 ID、扩展 ID 与本地版本,并据此推导扩展路径与命名空间。升级采用与 Provisioner 一致的按目录扫描、按版本号对比执行的机制(见 Provisioner)。

属性

属性类型默认可见性说明
$extensionsPathstringNULLprivate扩展所在的绝对路径
$extensionIdstringNULLprivate扩展 ID
$namespacestringNULLprivate扩展类完全限定命名空间前缀,如 \PluginId\Extensions\ExtId

方法速查表

方法作用
__construct($pluginId, $extensionId, $fromVersion, $extensionsPath)构建扩展编排器
install()安装扩展(执行安装类)
runInstallSql()运行安装 SQL
upgrade()升级扩展(执行升级文件)
runUpgradeSql()运行升级 SQL
clean()清除 Provisioner 目录下的所有文件与文件夹
cleanInstall()清除 Install 文件夹
cleanUpgrade()清除 Upgrade 文件夹

方法

__construct($pluginId, $extensionId, $fromVersion, $extensionsPath) — 构建扩展编排器

根据插件 ID、扩展 ID 推导扩展路径与命名空间。传入了 $extensionsPath 时使用自定义路径,否则按 {pluginPath}/Extensions/{extensionId} 定位。

参数

参数类型默认说明
$pluginIdstring应用 ID
$extensionIdstring扩展 ID
$fromVersionstring本地版本
$extensionsPathstringNULL扩展路径(相对插件目录)

返回值

  • 无。

install() — 安装扩展

若扩展目录下存在 Provisioner/Install/Install.php,则实例化命名空间 {namespace}\Provisioner\Install\Install 并调用其 handle()

参数

  • 无。

返回值

  • $this:当前实例(支持链式调用)。

runInstallSql() — 运行安装 SQL

按多编码(multipleEncode 配置)选择 SQL 文件路径,优先 <Charset>/install.sql,其次 <Charset>.sql,最后兜底 install.sql,存在则执行 runquery()

参数

  • 无。

返回值

  • $this:当前实例(支持链式调用)。

upgrade() — 升级扩展

扫描 Provisioner/Upgrade/Files 目录下的升级文件,按版本号对比执行,每个文件实例化 {namespace}\Provisioner\Upgrade\Files\{FileName} 并调用其 handle()

参数

  • 无。

返回值

  • $this:当前实例(支持链式调用)。

runUpgradeSql() — 运行升级 SQL

按多编码配置选择 SQL 目录(多编码时 Provisioner/Upgrade/{Charset},否则 Provisioner/Upgrade/SQL),扫描并按版本对比执行其中的 .sql 文件。

参数

  • 无。

返回值

  • $this:当前实例(支持链式调用)。

clean() — 清除 Provisioner 目录

清除扩展 Provisioner 目录下的全部文件与文件夹(先清理 Install 与 Upgrade,再删除 Provisioner 目录本身)。

参数

  • 无。

返回值

  • boolFileSystem::deleteDirectory() 的返回结果。

cleanInstall() — 清除 Install 目录

删除扩展的 Provisioner/Install 目录。

参数

  • 无。

返回值

  • boolFileSystem::deleteDirectory() 的返回结果。

cleanUpgrade() — 清除 Upgrade 目录

删除扩展的 Provisioner/Upgrade 目录。

参数

  • 无。

返回值

  • boolFileSystem::deleteDirectory() 的返回结果。