jeyroik/extas-installer

此包的最新版本(3.6.2)没有提供许可证信息。

Extas 安装包


README

tests codecov.io Latest Stable Version Total Downloads Dependents

描述

本包允许安装与 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

创建和安装自定义实体

  1. 创建实体类。
namespace my\extas;

use extas\components\Item;

class My extends Item
{
    protected function getSubjectForExtension(): string
    {
        return 'my';
    }
}
  1. 为实体创建存储库。

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 的集合。

  1. 在配置中为我们的实体想一个部分名称。

让我们叫它 my_names

  1. 创建安装我们实体的插件。
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;
}
  1. 将插件和存储库接口添加到 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"}
    ]
}
  1. 安装插件。

# vendor/bin/extas i