think-soar
!本项目不再维护,如果有人愿意接手维护可以联系我。
SQL 语句优化器和重写器.
适用于 thinkphp5 SQL 语句优化器扩展包, 基于 guanguans/soar-php.
$ composer require guanguans/think-soar --dev
# macOS
$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.darwin-amd64
# linux
$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64
# windows
$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.windows-amd64
Скопируйте config\soar.php в каталог конфигурации thinkphp и настройте его. Установите для thinkphp app_debug и trace значение true.
Пример вызова метода:
<?php
namespace app\index\controller;
use think\Db;
class Index
{
public function tests()
{
$user = Db::table('fa_user')->where('id', 1)->select();
$sql = Db::table('fa_user')->fetchSql()->select();
// Последняя инструкция SQL оценивается
echo soar_score();
// Оценка конкретной инструкции SQL
echo soar_score($sql);
echo soar()->score($sql);
}
}
Результат вывода:
Пример вызова метода:
<?php
namespace app\index\controller;
use think\Db;
class Index
{
public function tests()
{
$user = Db::table('fa_user')->where('id', 1)->select();
$sql = Db::table('fa_user')->fetchSql()->select();
// Анализ последней инструкции SQL explain
echo soar_html_explain();
echo soar_md_explain();
// Подробный анализ конкретной инструкции SQL explain
echo soar_html_explain($sql);
echo soar_md_explain($sql);
echo soar()->htmlExplain($sql);
echo soar()->mdExplain($sql);
}
}
Результат вывода:
Пример вызова метода:
$sql = 'selec * from fa_user';
echo soar_syntax_check();
echo soar_syntax_check($sql);
echo soar()->syntaxCheck($sql);
Результат вывода:
At SQL 1 : line 1 column 5 near "selec * from fa_user" (total length 20)
Пример вызова метода:
$sql = 'select * from fa_user where id=1';
echo soar_finger_print();
echo soar_finger_print($sql);
echo soar()->fingerPrint($sql);
Результат вывода:
select * from fa_user where id = ?
Пример вызова метода:
$sql = 'select * from fa_user where id=1';
var_dump(soar_pretty());
var_dump(soar_pretty($sql));
var_dump(soar()->pretty($sql));
Результат вывода:
SELECT
*
FROM
fa_user
WHERE
id = 1;
Пример вызова метода:
echo soar_md2html("## 这是一个测试");
echo soar()->md2html("## 这是一个测试");
Результат вывода:
...
Пример вызова метода:
var_dump(soar_help());
var_dump(soar()->help());
Результат вывода:
... /Users/yaozm/Documents/wwwroot/soar-php/soar: -allow-charsets string AllowCharsets (default "utf8,utf8mb4") -allow-collates string AllowCollates -allow-drop-index AllowDropIndex, 允许输出删除重复索引的建议 -allow-engines string AllowEngines (default "innodb") -allow-online-as-test AllowOnlineAsTest, 允许线上环境也可以当作测试环境 -blacklist string 指定 blacklist 配置文件的位置,文件中的 SQL 不会被评审。 ···
Пример вызова метода:
$command = "echo '## 这是另一个测试' | /Users/yaozm/Documents/wwwroot/soar-php/soar.darwin-amd64 -report-type md2html";
echo soar_exec($command);
echo soar()->exec($command);
Результат вывода:
...
<h2>这是另一个测试</h2>
...
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )