ssitu/medicis

一个专注于快速创建 JSON 集合的 PHP 工具。处理模式、示例数据、翻译;生成用于 UI 集成的页面和菜单配置;按组打包集合;在 CLI 中运行。

v0.9.8 2021-06-01 21:42 UTC

This package is auto-updated.

Last update: 2024-09-22 18:56:21 UTC


README

一个专注于快速创建 JSON 集合的 PHP 工具。

  • 处理模式、示例数据、翻译
  • 可以生成额外的自定义配置文件
  • 按组打包集合
  • 在 CLI 中运行

设置

安装

$ composer require ssitu/medicis

ssitu/jacktrades 也会被安装。这是一个非常小的实用工具库。

准备 CLI

要在 CLI 中使用 Medicis,还需要安装 ssitu/euclid。Composer 应该建议您这样做;否则

$ composer require ssitu/euclid

初始化

use SSITU\Medicis\MedicisCli;
# OR:
use SSITU\Medicis\MedicisMap;

#If not already summoned:
require_once  'path_to_composer/autoload.php';

# Pick a path to host your collections files:
$pathToCollc = 'path_to_collections_dir/';

# Then:
$MedicisCli = new MedicisCli($pathToCollc, true);
# OR:
$MedicisMap = new MedicisMap($pathToCollc);
var_dump($MedicisMap->getLog());

将创建目录。

TLDR

查看 samples/collections 中的文件;
以及 CLI 的入门

$ php samples/bin/medicis

集合

Medicis 的全部目的是轻松快速地编写 JSON 模式(并使用它们)。

集合将按 进行排列。
组是相关集合的集合。
当然,一个组也可以包含一个单独的集合。

准备

要设置一个集合

  • src/collc 中 : 创建一个子文件夹,命名为您的集合组。 例如
    src/collc/people/

  • 然后在该文件夹内,创建集合 JSON 文件(s)。文件(s)名(s)必须是 '组名' 连接 '集合名'; 例如: people-contacts.jsonpeople-activities.json

每个集合文件都必须指定 2 个主要属性

  • required | 数组(必需属性;将用于模式验证),
  • props | 数组(模式属性)。

props 项是对象,每个对象包含 2 个属性

  • method | 字符串
  • param | 数组

快捷方式在 methodparam 中:它们引用 MedicisModels 中的方法,这些方法将执行重负载工作。

示例: people-activities.json

{
  "required": ["activity"],
  "props": [
    {
      "method": "String",
      "param": ["activity", "Art historian"]
    }
  ]
}

相关的 MedicisModel 方法

$MedicisModels->String( $id,
                        $example,
                        $minLen = false,
                        $maxLen = false,
                        $pattern = false);

MedicisModel 接口文件将作为可用方法的 备忘单Medicis/src/MedicisFamily/MedicisModels_i.php

配置

您可以为每个集合添加一个配置属性;它可能包含的内容完全取决于您。如果集合将被集成到某些 UI 中,它可能包括诸如权限级别、使用的模板、菜单中的位置等。

"config":
  {
    "priority":2,
    "status": "required",
    "auth": 1,
    "template": "collections"
}

内容将从 src 文件中分离,进入其自己的 dist/ 中的文件。至于其他集合文件,当在 CLI 中运行 'Groups' 命令时,将生成一个捆绑包。

您还可以在 src/collc/your-group/ 中创建一个类似的文件,用于组级配置,命名为您的组: your-group.json。然后,组捆绑包文件将包含组配置,并将集合配置包装在 'items' 属性中。

翻译

为每个您计划进行翻译的语言,在 src/transl 文件夹中创建一个文件,命名如下: collections-{language}.json

在 CLI 中,运行针对集合或组的 'transl' 命令:源翻译文件将自动填充需要翻译的键(您将获得一个日志)。

请注意,'all' 命令包括翻译。

条目在以下内容之间分开

  • 'name' 用于集合和组名称,
  • 'prop' 用于属性标题。

示例 collections-en.json

{
  "name":{
    "people": "People",
    "people-activities": "People | Activities",
    "people-contacts": "People | Contact"
    },
  "prop":{
    "name": "Name",
    "addresses": "Addresses",
    "emails": "Emails",
    "websites": "Websites",
    "activity": "Activity"
    }
}

提取

从那里生成一个真实架构、模拟数据、翻译数组,以及可选的配置,在命令行界面(CLI)中

  • 选择 'Collc'
  • 然后 'people-activities -> all'

您将获得一个记录了哪些成功、失败、被跳过的日志,并在 dist/people/ 文件夹中找到生成的文件。
schdataconfigtransl

合并

在命令行界面(CLI)中,一个 'Group' 命令将

  • 一次运行所有组收集的强项操作,
  • 并为每个类别生成一个捆绑文件。目标文件夹:dist/your-group/bundle/

MetaMedicis

MedicisCli 对于快速、常见操作来说很好,但针对更具体的操作

  • 请使用 Euclid 主工具(在这种情况下,请参阅 Euclid 文档),
  • 或从 MetaMedicis 类操作
$MedicisMap = new MedicisMap($collectionDirPath);
$log = $MedicisMap->getLog();
if (!empty($log['err'])) {
 var_dump($log);
 exit;
}
$MetaMedicis = new MetaMedicis($MedicisMap);

一个非详尽的可能列表(参阅接口了解更多)

$MedicisTransl = $MetaMedicis->getMedicisMember('Transl');
$MedicisTransl->collcTranslBuild($collcId);

$MedicisSchema = $MetaMedicis->getMedicisMember('Schema');
$MedicisSchema->schBuild($collcId);

$MedicisCollc = $MetaMedicis->getMedicisMember('Collc');
$MedicisCollc->collcBuild($collcId, $translToo = true);
$MedicisCollc->collcConfigBuild($collcId);
$MedicisCollc->dummyDataBuild($collcId);

$MedicisGroup = $MetaMedicis->getMedicisMember('Group');
$MedicisGroup->groupBuild($groupId, $translToo = true);

贡献

当然可以!您可以查看 CONTRIBUTING

许可

此项目受 MIT 许可证保护;有关详细信息,请参阅 LICENSE