ssitu / medicis
一个专注于快速创建 JSON 集合的 PHP 工具。处理模式、示例数据、翻译;生成用于 UI 集成的页面和菜单配置;按组打包集合;在 CLI 中运行。
Requires
- ssitu/jacktrades: ^2.1
Suggests
- ssitu/euclid: To run Medicis from CLI
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.json
和people-activities.json
每个集合文件都必须指定 2 个主要属性
required
| 数组(必需属性;将用于模式验证),- 和
props
| 数组(模式属性)。
props
项是对象,每个对象包含 2 个属性
method
| 字符串- 和
param
| 数组
快捷方式在 method
和 param
中:它们引用 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/
文件夹中找到生成的文件。
sch
、data
、config
和 transl
。
合并
在命令行界面(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。