smolowik/gateway-test-bundle

创建 symfony flex 插件的示例包

1.0.0 2023-06-26 09:15 UTC

This package is auto-updated.

Last update: 2024-09-26 12:00:24 UTC


README

此仓库用于创建 PHP Symfony flex 插件。通用网关生态系统使用此模板进行快速开发,以扩展核心之外的网关功能。

第一部分关于安装插件。后一部分是关于自定义插件以扩展通用网关功能。

使用通用网关管理用户界面进行安装

一旦正确设置了一个包(如此仓库),通用网关可以无需额外配置就发现该包。转到 插件 标签以搜索、选择和安装插件。

使用 PHP 命令进行安装

要执行以下命令,您需要 Composer 或已经安装 PHP 和 Composer 的 Docker 安装。

在终端和根目录中使用的 Composer 方法

用于安装插件

$composer require common-gateway/pet-store-bundle:dev-main

用于安装模式

`$php bin/console commongateway:install common-gateway/pet-store-bundle

在终端和根目录中使用的 Dockerized 方法

用于安装插件

$docker-compose exec php composer require common-gateway/pet-store-bundle:dev-main

用于安装模式

$docker-compose exec php bin/console commongateway:install common-gateway/pet-store-bundle

创建您的插件

本节面向想要构建插件以扩展通用网关功能而不添加核心代码库的开发者。

以下知识是假定和/或已安装的

Composer Packagist Docker Schema.json通用网关 的基本了解

使用此模板

此模板用于快速开发 Symfony 插件,并作为基于自定义插件的模式。按照以下步骤在 45 分钟或更短的时间内创建您的插件

  1. 登录 GitHub

  2. 使用 此模板

  3. 命名您的插件(驼峰命名法)。根据 Symfony 命名约定,插件需要以 Bundle 结尾。

  4. 点击绿色按钮 从模板创建仓库

  5. 更新文件名和命名空间以适应您的需要

    • 打开 composer.json,并将其名称更改为适合您的名称。第一个单词应该是命名空间,第二个是插件的名称。

    注意:这是中划线命名法。另外阅读:命名您的包

    • 检查自动加载字段是否已正确设置。
    • 打开 PetStoreBundle.php 并将 Bundle 的 namenamespace 更改为适合您的。命名空间应与 composer.json 中的包名称相同,但为驼峰命名法。因此,common-gateway/pet-store-bundle 变为 CommonGateway/PetStoreBundle
    • 相应地重命名 /Service/ActionHandler(如果未使用,则删除)。
    • /DependencyInjection/PetStoreExtension.php 重命名为您的 BundleNameExtension.php
    • 重命名 /Resources/config/services.yaml 命名空间

添加模式

您可以从您的 json schemas 文件夹中加载实体,并在 Common Gateway 中使用它们来处理基于您架构的对象。

您可以将现有的架构添加到 /Schema 文件夹中,或者创建自己的架构并添加。这里有一个示例在 /Schema/example.json 中。

以下属性是必需的,如果没有这些属性,网关将无法识别架构为有效

- `version` can start on '0.1.0.' 

没有这个属性,您无法更新方案

- `$schema` (https://docs.commongateway.nl/schemas/Entity.schema.json)
- `$id` (https://example.com/schema/{Your scheme name}.schema.json)

具有唯一 $id 以与其他架构相关联。

- `type` must be 'object'
- `properties` must be schema properties

一旦将架构添加到存储库,您还可以为这些架构添加对象/数据。在 /Data 文件夹中有一个示例。