masnathan/sql-query-formatter

此包已被弃用且不再维护。未建议替代包。

一个非常轻量级的PHP类,可以将难以阅读的或计算机生成的SQL查询语句重格式化为人类友好的可读文本。

v1.2.1 2015-05-28 09:12 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:48:00 UTC


README

Build Status Coverage Status Scrutinizer Code Quality SensioLabsInsight Latest Stable Version Total Downloads License

一个非常轻量级的PHP类,可以将难以阅读的或计算机生成的SQL查询语句重格式化为人类友好的可读文本。

1. 安装

推荐通过Composer安装SQL Query Formatter。运行以下命令进行安装

php composer.phar require nilportugues/sql-query-formatter

2. 特性

人类可读的SQL格式化

  • 人类可读的纯文本。无颜色,无突出显示。纯文本在大多数情况下已经足够。

数据绑定意识

  • SQL Query Formatter非常重视数据绑定。
  • 考虑并保留占位符语法,如:variable?,在格式化时保持不变。

3. 使用方法

示例代码

<?php
use NilPortugues\Sql\QueryFormatter\Formatter;

$query = <<<SQL
SELECT user.user_id, user.username, (SELECT 
role.role_name FROM role WHERE (role.role_id = :v1) 
LIMIT :v2, :v3 ) AS user_role, (SELECT 
role.role_name FROM role WHERE (role.role_id = :v4)
LIMIT :v5, :v6 ) AS role FROM user WHERE (user.user_id = :v7)
SQL;

$formatter = new Formatter();
echo $formatter->format($query);

实际输出

SELECT
    user.user_id,
    user.username,
    (
        SELECT
            role.role_name
        FROM
            role
        WHERE
            (role.role_id = :v1)
        LIMIT
            :v2,
            :v3
    ) AS user_role,
    (
        SELECT
            role.role_name
        FROM
            role
        WHERE
            (role.role_id = :v4)
        LIMIT
            :v5,
            :v6
    ) AS role
FROM
    user
WHERE
    (user.user_id = :v7)

4. 完全测试

使用PHPUnit和Travis-CI进行了测试。所有代码均经过测试,以兼容PHP 5.4至PHP 5.6以及HHVM (夜间版本)

要运行测试套件,您需要Composer

    php composer.phar install --dev
    bin/phpunit

5. 作者

Nil Portugués Calderó

6. 特别感谢

我想感谢以下人员

7. 许可证

SQL Query Formatter遵循MIT许可证。

Copyright (c) 2015 Nil Portugués Calderó

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.