jeyroik / extas-installer
此包的最新版本(3.6.2)没有提供许可证信息。
Extas 安装包
3.6.2
2020-09-30 11:54 UTC
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 11:29:54 UTC
README
描述
本包允许安装与 Extas 兼容的实体。
要求
- PHP 7.4+
- MongoDB 3+
安装
安装包
# composer require jeyroik/extas-installer:*
初始化 Extas
# vendor/bin/extas init
该命令将创建默认的类容器并安装根插件和扩展。
初始化有以下阶段(所有阶段都有相应的接口)
extas.init
:在此阶段可以进行初始化包的附加操作。extas.init.section
:在此阶段可以进行初始化部分的附加操作。extas.init.item
:在此阶段可以进行初始化特定元素的附加操作。
执行此操作后,将安装所有必需的插件和扩展。如果需要插件/扩展由该命令安装,则必须在插件/扩展的配置中添加
install_on: initialization
- 示例
{ "plugins": [ { "class": "my\\Plugin", "stage": "my.stage", "install_on": "initialization" } ] }
安装实体
# vednor/bin/extas install -a my_app
(简写形式:extas i -a my_app
)
安装包括两个步骤
- 收集包配置。
- 安装找到的包。
可以通过插件在任何步骤中连接(对于所有阶段都有相应的接口),阶段按顺序列出
extas.crawl.packages
:收集配置后触发。extas.install.<application.name>
:从安装命令的-a
选项中获取<application.name>
。extas.install
:在此阶段可以连接自己的安装器以实现特定的安装逻辑。extas.install.package.<package.name>
:从包配置中获取<package.name>
。在此阶段可以进行安装包的附加操作。extas.install.package
:类似于上一个阶段。extas.install.section.<section.name>
:<section.name>
是配置中的部分名称。在此阶段可以进行安装部分的附加操作。extas.install.section
:类似于上一个阶段。extas.install.section.<section.name>.item
:在此阶段可以进行安装特定实体元素的附加操作。extas.install.item
:类似于上一个阶段。
删除实体
# vendor/bin/extas uninstall
(简写形式extas u
)
删除也提供了阶段
extas.uninstall.<application.name>
extas.uninstall.package.<package.name>
extas.uninstall.package
extas.uninstall.section.<section.name>
extas.uninstall.section
extas.uninstall.item.<section.name>
extas.uninstall.item
创建和安装自定义实体
- 创建实体类。
namespace my\extas; use extas\components\Item; class My extends Item { protected function getSubjectForExtension(): string { return 'my'; } }
- 为实体创建存储库。
Extas 默认支持 MongoDB。
namespace my\extas; use extas\components\repositories\Repository; class MyRepository extends Repository { protected string $pk = 'name'; protected string $itemClass = My::class; protected string $scope = 'my'; protected string $name = 'names'; }
使用此存储库,将创建名为 my__names
的集合。
- 在配置中为我们的实体想一个部分名称。
让我们叫它 my_names
。
- 创建安装我们实体的插件。
namespace my\extas; use extas\components\plugins\install\InstallSection; class PluginInstallMyNames extends InstallSection { protected string $selfSection = 'my_names'; protected string $selfName = 'my name'; protected string $selfRepositoryClass = 'myRepository'; protected string $selfUID = 'name'; protected string $selfItemClass = My::class; }
- 将插件和存储库接口添加到 Extas 的配置中。
默认情况下,配置位于根目录中的 extas.json
文件。您可以使用任何名称 - 在这种情况下,不要忘记在安装时使用 -p
标志指定它(见下文)。
example.json
{ "name": "example", "plugins": [ {"class": "my\\extas\\PluginInstallMyNames", "stage": "extas.install.section.my_names"} ], "my_names": [ {"name": "Example 1"}, {"name": "Example 2"} ], "package_classes": [ {"interface": "myRepository", "class": "my\\extas\\MyRepository"} ] }
- 安装插件。
# vendor/bin/extas i