This is a tool to syntax highlight PHP code for display on a terminal. It takes in an AST produced by nikic/php-parser and prints the code. It only decorates a subset of the language. It is literally a copy-paste of PrettyPrinter/Standard with some decorating added around the printing.
use PhpSchool\PSX\Factory;
$highlighterFactory = new Factory;
$highlighter = $highlighterFactory->__invoke();
echo $highlighter->highlight($phpCode);
The colouring by default uses kevinlebrun/colors.php. You can use any library you want
by building an adapter class which implements \PhpSchool\PSX\ColourAdapterInterface
, you will need to map the colours in \PhpSchool\PSX\Colours
to your library.
use PhpParser\ParserFactory;
use Colors\Color;
use PhpSchool\PSX\SyntaxHighlighter;
use PhpSchool\PSX\SyntaxHighlightPrinter;
use PhpSchool\PSX\SyntaxHighlighterConfig;
use PhpSchool\PSX\ColorsAdapter;
$parserFactory = new ParserFactory;
$color = new Color;
$color->setForceStyle(true);
$highlighter = new SyntaxHighlighter(
$parserFactory->create(ParserFactory::PREFER_PHP7),
new SyntaxHighlightPrinter(
new SyntaxHighlighterConfig([
SyntaxHighlighterConfig::TYPE_KEYWORD => Colours::GREEN,
SyntaxHighlighterConfig::TYPE_RETURN_NEW => Colours::BLACK,
]),
new ColorsAdapter($color)
)
);
This will set any keywords as green and return & new statements as black.
Types are defined in \PhpSchool\PSX\SyntaxHighlighterConfig
Each type can have a it's own colour.
Every keyword inside each type will be coloured by that colour.
if
elseif
else
for
foreach
while
do
switch
finally
try
catch
break
continue
throw
goto
function
{
}
'some-string'
echo
return
new
->
(
)
SyntaxHighlighterConfig
<?php