aryelgois / yasql-php
YAML Ain't SQL 的 PHP 实现
Requires
- php: ^7.0
- symfony/yaml: ^3.4
This package is not auto-updated.
Last update: 2024-09-15 04:43:27 UTC
README
索引
简介
这是 YAML Ain't SQL 的 PHP 实现,其规范可在 aryelgois/yasql 中找到。
安装
进入终端,导航到您的项目根目录并运行
composer require aryelgois/yasql-php
设置
此包提供 CLI 工具以处理 YASQL 文件。要使用它们,请在您的 composer.json 中添加以下内容
{
"scripts": {
"yasql-build": "aryelgois\\YaSql\\Composer::build",
"yasql-generate": "aryelgois\\YaSql\\Composer::generate"
}
}
您还需要为构建器命令创建一个 配置文件。默认情况下,它位于 config/databases.yml,但您可以选择其他位置或拥有多个配置。
(见 构建器 规范)
用法
yasql-build
首先,根据 YASQL 模式创建数据库并在您的 配置文件 中列出它们。然后在项目根目录中运行以下命令
composer yasql-build -- [ config=path/to/config_file.yml | -c ] [ output=path/to/output/ ] [ vendor=vendor/package ]
config:列出要构建的 YASQL 数据库和要包含的供应商-c标志表示您不需要任何配置文件。当使用vendor参数时非常有用。它与config=''相同
output:文件生成的目录vendor:要包含的附加供应商(使用默认配置文件位置)
注意
- 命令行中的路径相对于项目根目录
- 配置文件中的路径相对于文件本身
- 绝对路径是绝对的(以
/开头) - 供应商位于 Composer 的
vendor dir - 您可以选择不使用
config以使用默认的config/databases.yml - 您可以选择不使用
output以使用默认的build/ - 您可以添加多个
vendor参数 - 将输出目录添加到您的 .gitignore 中可能是个好主意
此命令在输出目录中创建 .sql 文件,因此您可以将它们导入到您的 sql 服务器中。
yasql-generate
如果您只想从单个 YASQL 模式生成 SQL,请运行以下命令
composer yasql-generate -- path/to/yasql.yml [缩进]
第一个参数是 YASQL 文件的路径,第二个是可选的缩进(默认为 2 个空格)。
它将输出到 stdout,因此您可以将类似 > output_database.sql 的内容添加以将结果写入文件。
API
此包提供了一些类来解析 YASQL 并生成 SQL。它们位于命名空间 aryelgois\YaSql 下。
Composer
提供 Composer 脚本来从命令行使用此包。
(见如何在 设置 中配置命令)
-
静态 build( 事件 $event )
它接受在 yasql-build 中描述的参数。
-
静态 generate( 事件 $event )
它接受在 yasql-generate 中描述的参数。
控制器
此类封装了其他类,以使它们更容易使用。
-
static build( 字符串 $output , 字符串 $config , 字符串 $vendor [, 数组 $vendors ] )
使用此方法将您的数据库构建到特定目录中。
(见 Builder) -
static generate( 字符串 $yasql [, 整数 $indent ] )
用于从YASQL生成SQL并获取结果字符串。
(见 Generator) -
static parse( 字符串 $yasql )
用于从YASQL中导出解析数据。基本上,这很好用于调试。
(见 Parser)
解析器
-
__construct( 字符串 $yasql )
它解析YASQL并从每个列中提取一些数据,使其为Generator准备好。
请参阅
$yasql规范 此处. -
getData()
以多维数组检索解析数据。
生成器
-
__construct( Parser $parser [, 整数 $indent ] )
生成生成数据库的SQL。它要求一个Parser对象以确保数据有效。
-
output()
以多行字符串检索生成的SQL。
构建器
-
__construct( [ 字符串 $output [, 字符串 $vendor ] ] )
创建一个新的Builder对象。数据库将存入
$output,供应商在$vendors中搜索。这两个路径可以是绝对路径或相对路径,默认分别为当前工作目录中的build/和vendor/。 -
build( 字符串 $config [, 数组 $vendors ] )
将
$config文件中列出的数据库生成到对象输出目录。 -
getLog()
从构建过程中检索日志信息。
配置文件
A YAML 包含以下键:(所有都是可选的)
-
databases: YASQL数据库模式的文件序列。它可以是字符串或YASQLpath和postsql(或post文件的序列)的映射此外,还可以定义一个
name来覆盖数据库的名称。当您想在单个数据库中合并多个数据库模式时很有用。只是要注意冲突的表。另外,注意外部外键在SQL服务器中运行的文件顺序需要特别注意 -
indentation: 在生成SQL时使用 -
vendors:Composer安装的供应商映射到它们内部的配置文件。它可以是字符串(单个配置)或路径序列。它们相对于供应商包根目录。使用~(yaml null)表示默认配置文件路径
示例
databases: - ../tests/example.yml - path: ../data/mydatabase.yml post: ../data/mydatabase_populate.sql name: AwesomeExample indentation: 4 vendors: someone/package: config/databases.yml
post文件对于预先填充行或应用YASQL规范未覆盖的sql命令很有用。其内容附加到生成的sql上。
填充器
Builder的帮助类。使用它来生成INSERT INTO语句以填充您的数据库。
这个类是抽象的,所以您必须编写一个扩展它的类。原因是数据可能具有任意的布局,这取决于您的数据库模式。
要使用它,您需要在builder配置中有一个特殊的post
来自aryelgois/databases的示例
databases: - path: ../data/address.yml post: - ../data/address/populate_countries.sql - call: aryelgois\Databases\AddressPopulator with: - ../data/address/source/Brazil.yml
post必须映射到序列,所需项是一个映射
call:扩展Populator的完全限定类,由Composer自动加载with:包含要处理的数据的YAML文件的路径。它可以是序列
工具
还有一个具有实用方法的类。它们在内部使用,也可以由需要此包的人使用。
-
arrayAppendLast( 数组 $array , 字符串 $last [, 字符串 $others ] )
将字符串附加到最后一个项。可选地,将字符串附加到其他项。这对于生成带有逗号分隔项的sql语句以及最后一个项的分号很有用。