Blame | Last modification | View Log | Download
# SqlFormatterA lightweight php package for formatting sql statements.It can automatically indent and add line breaks in addition to syntaxhighlighting.## HistoryThis package is a fork from https://github.com/jdorn/sql-formatterHere is what the original History section says:> I found myself having to debug auto-generated SQL statements all the time and> wanted some way to easily output formatted HTML without having to include a> huge library or copy and paste into online formatters.> I was originally planning to extract the formatting code from PhpMyAdmin,> but that was 10,000+ lines of code and used global variables.> I saw that other people had the same problem and used Stack Overflow user> losif's answer as a starting point. http://stackoverflow.com/a/3924147― @jdorn## UsageThe `SqlFormatter` class has a method `format` which takes an SQL string asinput and returns a formatted block.Sample usage:```php<?phprequire_once 'vendor/autoload.php';use Doctrine\SqlFormatter\SqlFormatter;$query = "SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10";echo (new SqlFormatter())->format($query);```Output:<img src="examples/readme_format_html.svg" width="600" height="450" alt="formatted output with HTML Highlight">When you run php under cli and instantiated `SqlFormatter` without argument, highlighted with `CliHighlighter`.SqlFormatter constructor takes `Highlighter` implementations. `HtmlHighlighter` etc.### Formatting OnlyIf you don't want syntax highlighting and only want the indentations andline breaks, pass in a `NullHighlighter` instance as the second parameter.This is useful for outputting to error logs or other non-html formats.```php<?phpuse Doctrine\SqlFormatter\NullHighlighter;use Doctrine\SqlFormatter\SqlFormatter;echo (new SqlFormatter(new NullHighlighter()))->format($query);```Output:```SELECTcount(*),`Column1`,`Testing`,`Testing Three`FROM`Table1`WHEREColumn1 = 'testing'AND ((`Column2` = `Column3`OR Column4 >= NOW()))GROUP BYColumn1ORDER BYColumn3 DESCLIMIT5, 10```### Syntax Highlighting OnlyThere is a separate method `highlight` that preserves all original whitespaceand just adds syntax highlighting.This is useful for sql that is already well formatted and just needs to be alittle easier to read.```php<?phpecho (new SqlFormatter())->highlight($query);```Output:<img src="examples/readme_highlight_html.svg" width="800" height="150" alt="HTML Highlight output">### Compress QueryThe `compress` method removes all comments and compresses whitespace.This is useful for outputting queries that can be copy pasted to the commandline easily.```sql-- This is a commentSELECT/* This is another commentOn more than one line */Id #This is one final commentas temp, DateCreated as Created FROM MyTable;``````phpecho (new SqlFormatter())->compress($query);```Output:```sqlSELECT Id as temp, DateCreated as Created FROM MyTable;```