Treemap php treemap generator

Description

This php package provides you to build treemaps in formats of html, canvas and image from native php multiarrays. Special architecture of classes gives you an opportunity for customization at level of one node: node content, node color and other.

More info about treemaps you may see in wiki.

View on github Download .zip Download .tar.zip

Installation

Install the latest version via composer:

composer require codeagent\treemap

Also, it's necessary to plug in required css-styles to your page for correct display of html markup. You can do that by copying treemap.css file to web-accessible folder of your server. For this, simply run vendor/bin/treemap command with target directory as argument. Then, you need to include it into the head section of page via <link> tag, for example <link rel="stylesheet" href="assets/treemap.css" />

Basic usage

Include composer’s autoloader and inject Treemap class from codeagent\treemap namespace into php script. Map is waiting at the entrance your data as first argument, width and height as second and third arguments respectively. To obtain the result of rendering (html markup, image), call render method of Presenter interface:

include("vendor/autoload.php");
use codeagent\treemap\Treemap;

// your data in consistent format
$data = [["value" => 2, "children" => [...]], ["value" => 4, "children" => [...]], [...], ...];
$presenter = Treemap::html($data, 1200, 800);
echo $presenter->render();

The result of snippet would be something like this (based on your data):

By default, Treemap class considers, that "weight" (from which calcualted node rectangle) non-negative value are located in the value attribute and the "children" nodes addressed via correspond children key of node. If it is not suitable for you, you can tell treemap which keys to pick explicitly:

$treemap = new Treemap($data, 1200, 800);
$treemap->valueAttribute = "volume";
$treemap->childrenAttribute = "department";

And then draw treemap using appropriate Presenter:

$presenter = new HtmlPresenter($treemap);
echo $presenter->render();

Not forget to inject presenter class to you script via use statement.

Custom node rendering

There is no practical benefit of presenting treemap without accompanying data. For this reason there is Presenter interface, that gives an ability to adjust a single node rendering via a utility Nodeinfo class, for example, consider the folowing example:

use codeagent\treemap\Treemap;
use codeagent\treemap\presenter\NodeInfo;
use codeagent\treemap\Gradient;

$gradient = new Gradient(['0.0' => '#f75557', '0.5' => '#646a82', '1.0' => '#5ad87b']);
echo Treemap::html($data, WIDTH, HEIGHT)->render(function (NodeInfo $node) use ($gradient) {
    if($node->isLeaf()) {
        $data   = $node->data();
        $max    = 5000;
        $min    = 10;
        $factor = ($data['float'] - $min) / ($max - $min);
        $color  = $gradient->color($factor);
        $node->content()->html("<span style='line-height: {$node->rectangle()->height}px'>{$data['name']}</span>");
        $node->background($color);
    }
});

The result is:

Prof. Twila Kris Sr.
Kory Hilll
Prof. Rylan Metz V
Thora Murphy
Monroe Murphy
Dr. Fannie O'Conner
Hans McCullough
Graciela Gerhold Sr.
Shanon Stokes
Rod Kunze
Miss Allene Gulgowski Jr.
Arnold Cremin Sr.
Melyssa Price
Dr. Marvin Erdman
Filiberto Bosco
Mr. Felix Schoen
Brendon Kuhn
Rebeka Gerhold
Teagan Berge
Stanford Brekke I
Mr. Ethan Quigley II
Fred Kuvalis
Heather Quitzon PhD
Queenie Turcotte
Dawn Kulas
Hugh Jacobi
Letha White
Brandt Lehner V
Estefania Reichel
Destinee Nienow
May DuBuque
Cynthia Windler
Mertie Schmidt
Chase Fahey
Ms. Tiffany Schneider
Graciela Rodriguez
Marjolaine Cummings
Iliana Prosacco Jr.
Prof. Lora Bednar
Nella Harber
Ms. Petra Kirlin
Ava Okuneva
Deron Medhurst III
Myrtice Hermann
Henderson Harvey
Dianna Kiehn
Luther Greenholt
Buster Vandervort
Samson Grady
Mr. Maynard Kling
Mikayla Bernier Sr.
Valentin Heidenreich Sr.
Cortney Jaskolski
Dr. Rowland Ritchie Sr.
Dr. Adolf Denesik MD
Mrs. Antoinette Gutkowski
Erin Hartmann
Kayleigh Emmerich
Leon Haag
Prof. Deja Waelchi III
Bonita Kuhic
Charley Jacobs II
Prof. Parker Durgan
Weston Satterfield
Miss Aimee Wuckert
Prof. Zakary Raynor
Sherwood Nader
Hortense Bartell
Roxane Doyle DVM
Miss Bettie Hills
Hoyt Mayert
Ibrahim Leffler
Vladimir Johns
Dr. Marques Oberbrunner
Jeremy Schneider
Travis Haley
Kenya Reilly
Prof. Gay Buckridge
Federico O'Keefe
Lilian Breitenberg
Iva Conn
Giovanna Breitenberg
Chet Botsford
Miss Pauline Heaney I
Lillian Pagac
Tillman Padberg
Reba Roberts
Stephen Gutkowski
Pierce Bruen Sr.
Estelle Hayes
Preston Treutel
Mr. Erin Dach
Mark Krajcik
Juston Wyman
Dr. Jose Dare
Winona Walker DVM
Destini Schinner
Dejuan Miller
Imani Carter
Joaquin Wunsch
Dane Hyatt
Jaeden Brekke
Helga Lebsack
Prof. Lisandro Hackett PhD
Russell Yost
Prof. Cristal Gaylord V
Leon McDermott
Antonette Johnston
Miss Gwendolyn Daniel IV
Dr. Veda Beatty
Hiram Ziemann
Dr. Lionel Shields IV
Dorcas D'Amore
Rahsaan Bartoletti
Alysa Walter DDS
Cletus Toy

Another useful feature is customizing node frame calculating. Because of rectangles calculation specific, set up it in Treemap::setNodeFrameResolver(callable $resolver) method. Pass to it a closure (or any callable you want) whitch returns new rectangle boundaries:

use codeagent\treemap\Treemap;
use codeagent\treemap\presenter\HtmlPresenter;
use codeagent\treemap\Rectangle;
use codeagent\treemap\NodeInfo;

$files                    = new Treemap($data, WIDTH, HEIGHT);
$files->valueAttribute    = 'size';
$files->childrenAttribute = 'files';
$files->setNodeFrameResolver(function (Rectangle $rectangle, $level) {
    if($level == 1) {
        $titleHeight = 20;
        $spacing     = 4;
        return new Rectangle(
            $rectangle->left + $spacing,
            $rectangle->top + $titleHeight,
            $rectangle->width - $spacing,
            $rectangle->height - $titleHeight - $spacing
        );
    }
    return $rectangle;
});

echo (new HtmlPresenter($files))->render(function (NodeInfo $node) {
    $data = $node->data();

    if($node->isLeaf()) {
        $node->visible(true);
        $node->content()->html("<span style='line-height: {$node->rectangle()->height}px'>{$data['name']}</span>");
    }
    elseif($node->isRoot()) {
        $node->visible(true);
        $node->background('transparent');
        $node
            ->content()
            ->html("<div style='width:100%;text-align:center'><strong>{$data['name']}</strong></div>");
    }
});
Tests
TableTest.php
ProgressBarTest.php
QuestionHelperTest.php
HelperSetTest.php
ProgressIndicatorTest.php
ProcessHelperTest.php
FormatterHelperTest.php
HelperTest.php
TableStyleTest.php
SymfonyStyle
application_2.xml
application_2.json
application_2.md
application_1.xml
application_1.json
application_1.md
command_asxml.txt
definition_asxml.txt
application_2.txt
application_run2.txt
DescriptorCommand2.php
application_astext1.txt
Foo3Command.php
definition_astext.txt
DummyOutput.php
command_2.xml
FooCommand.php
application_1.txt
application_astext2.txt
application_renderexception3decorated.txt
command_astext.txt
TestCommand.php
application_run3.txt
DescriptorCommand1.php
FooSubnamespaced1Command.php
FooSubnamespaced2Command.php
Foo1Command.php
DescriptorApplication2.php
command_2.md
application_run1.txt
command_2.json
FoobarCommand.php
Foo2Command.php
input_definition_4.xml
application_renderexception3.txt
DescriptorApplication1.php
command_2.txt
application_renderexception4.txt
command_1.xml
application_renderexception2.txt
input_definition_4.md
input_definition_4.json
application_renderexception1.txt
input_option_2.xml
input_definition_3.xml
input_definition_2.xml
input_option_6.xml
input_argument_3.xml
input_option_5.xml
Foo6Command.php
input_option_3.xml
input_option_4.xml
input_option_6.md
command_1.json
input_argument_4.xml
input_option_5.md
input_option_2.md
input_definition_3.json
application_renderexception_doublewidth2.txt
Foo4Command.php
input_option_4.md
input_option_1.xml
BarBucCommand.php
input_argument_2.xml
input_definition_3.md
input_option_3.md
application_renderexception_doublewidth1decorated.txt
input_option_6.json
input_option_2.json
input_option_5.json
input_option_1.md
command_1.md
input_argument_1.xml
input_option_3.json
input_option_4.json
input_argument_4.md
input_option_1.json
input_argument_3.md
Foo5Command.php
input_definition_2.json
input_argument_2.md
input_definition_2.md
input_definition_4.txt
input_argument_3.json
input_argument_4.json
input_option_5.txt
input_argument_1.md
input_option_2.txt
input_option_4.txt
input_argument_2.json
command_1.txt
application_renderexception_doublewidth1.txt
input_argument_3.txt
input_definition_1.xml
input_argument_1.json
input_argument_4.txt
input_option_6.txt
input_option_3.txt
input_definition_3.txt
input_definition_2.txt
input_argument_2.txt
input_option_1.txt
input_definition_1.json
input_argument_1.txt
application_gethelp.txt
application_run4.txt
InputDefinitionTest.php
ArgvInputTest.php
InputOptionTest.php
ArrayInputTest.php
InputTest.php
StringInputTest.php
InputArgumentTest.php
ApplicationTest.php
CommandTest.php
ListCommandTest.php
HelpCommandTest.php
OutputFormatterTest.php
OutputFormatterStyleTest.php
OutputFormatterStyleStackTest.php
OutputTest.php
StreamOutputTest.php
NullOutputTest.php
ConsoleOutputTest.php
AbstractDescriptorTest.php
ObjectsProvider.php
JsonDescriptorTest.php
MarkdownDescriptorTest.php
TextDescriptorTest.php
XmlDescriptorTest.php
CommandTesterTest.php
ApplicationTesterTest.php
SymfonyStyleTest.php
ConsoleLoggerTest.php
Helper
Table.php
ProgressBar.php
QuestionHelper.php
ProgressIndicator.php
TableStyle.php
ProcessHelper.php
DebugFormatterHelper.php
Helper.php
SymfonyQuestionHelper.php
FormatterHelper.php
DescriptorHelper.php
HelperSet.php
TableCell.php
HelperInterface.php
InputAwareHelper.php
TableSeparator.php
Input
InputDefinition.php
ArgvInput.php
ArrayInput.php
Input.php
InputOption.php
InputInterface.php
InputArgument.php
StringInput.php
InputAwareInterface.php
Descriptor
TextDescriptor.php
XmlDescriptor.php
MarkdownDescriptor.php
JsonDescriptor.php
ApplicationDescription.php
Descriptor.php
DescriptorInterface.php
Application.php
Command
Command.php
ListCommand.php
HelpCommand.php
Formatter
OutputFormatterStyle.php
OutputFormatter.php
OutputFormatterStyleStack.php
OutputFormatterInterface.php
OutputFormatterStyleInterface.php
Output
Output.php
ConsoleOutput.php
OutputInterface.php
StreamOutput.php
NullOutput.php
BufferedOutput.php
ConsoleOutputInterface.php
Style
SymfonyStyle.php
StyleInterface.php
OutputStyle.php
Question
Question.php
ChoiceQuestion.php
ConfirmationQuestion.php
Tester
ApplicationTester.php
CommandTester.php
Resources
hiddeninput.exe
Event
ConsoleExceptionEvent.php
ConsoleEvent.php
ConsoleCommandEvent.php
ConsoleTerminateEvent.php
Logger
ConsoleLogger.php
Exception
CommandNotFoundException.php
InvalidOptionException.php
InvalidArgumentException.php
RuntimeException.php
LogicException.php
ExceptionInterface.php
CHANGELOG.md
ConsoleEvents.php
phpunit.xml.dist
composer.json
LICENSE
README.md
.gitignore

Map formats

Of course, presentation of treemap does not limited only by html. Besides html there are classes for building images and canvas elements in this package.

use codeagent\treemap\Treemap;
use codeagent\treemap\presenter\HtmlPresenter;
use codeagent\treemap\presenter\NestedHtmlPresenter;
use codeagent\treemap\presenter\CanvasPresenter;
use codeagent\treemap\presenter\ImagePresenter;

/**
 * @var HtmlPresenter $html
 */
$html = Treemap::html($data, WIDTH, HEIGHT);

/**
 * @var NestedHtmlPresenter $html
 */
$nested = Treemap::nested($data, WIDTH, HEIGHT);

/**
 * @var ImagePresenter $html
 */
$image = Treemap::image($data, WIDTH, HEIGHT, "png");

/**
 * @var CanvasPresenter $html
 */
$canvas = Treemap::canvas($data, WIDTH, HEIGHT);

echo $html->render($renderrer);
echo $nested->render($renderrer);
echo $canvas->render($renderrer);

header("Content-Type: image/png");
echo $image->render($renderrer);

Canvas

Image

ImagePresenter outputs image in form of raw data. For this reason, pass appropriate content-type header with image data: header("Content-Type: image/png").

// todo:

Nested maps

It is worth noting the NestedtmlPresenter. In fact, it is a collection of treemaps with different detalization degree, which gives you conveniently navigate from one map to another via headers and breadcrumbs at top of presenter:

TableTest.php
ProgressBarTest.php
QuestionHelperTest.php
HelperSetTest.php
ProgressIndicatorTest.php
ProcessHelperTest.php
FormatterHelperTest.php
HelperTest.php
TableStyleTest.php
SymfonyStyle
application_2.xml
application_2.json
application_2.md
application_1.xml
application_1.json
application_1.md
command_asxml.txt
definition_asxml.txt
application_2.txt
application_run2.txt
DescriptorCommand2.php
application_astext1.txt
Foo3Command.php
definition_astext.txt
DummyOutput.php
command_2.xml
FooCommand.php
application_1.txt
application_astext2.txt
application_renderexception3decorated.txt
command_astext.txt
TestCommand.php
application_run3.txt
DescriptorCommand1.php
FooSubnamespaced1Command.php
FooSubnamespaced2Command.php
Foo1Command.php
DescriptorApplication2.php
command_2.md
application_run1.txt
command_2.json
FoobarCommand.php
Foo2Command.php
input_definition_4.xml
application_renderexception3.txt
DescriptorApplication1.php
command_2.txt
application_renderexception4.txt
command_1.xml
application_renderexception2.txt
input_definition_4.md
input_definition_4.json
application_renderexception1.txt
input_option_2.xml
input_definition_3.xml
input_definition_2.xml
input_option_6.xml
input_argument_3.xml
input_option_5.xml
Foo6Command.php
input_option_3.xml
input_option_4.xml
input_option_6.md
command_1.json
input_argument_4.xml
input_option_5.md
input_option_2.md
input_definition_3.json
application_renderexception_doublewidth2.txt
Foo4Command.php
input_option_4.md
input_option_1.xml
BarBucCommand.php
input_argument_2.xml
input_definition_3.md
input_option_3.md
application_renderexception_doublewidth1decorated.txt
input_option_6.json
input_option_2.json
input_option_5.json
input_option_1.md
command_1.md
input_argument_1.xml
input_option_3.json
input_option_4.json
input_argument_4.md
input_option_1.json
input_argument_3.md
Foo5Command.php
input_definition_2.json
input_argument_2.md
input_definition_2.md
input_definition_4.txt
input_argument_3.json
input_argument_4.json
input_option_5.txt
input_argument_1.md
input_option_2.txt
input_option_4.txt
input_argument_2.json
command_1.txt
application_renderexception_doublewidth1.txt
input_argument_3.txt
input_definition_1.xml
input_argument_1.json
input_argument_4.txt
input_option_6.txt
input_option_3.txt
input_definition_3.txt
input_definition_2.txt
input_argument_2.txt
input_option_1.txt
input_definition_1.json
input_argument_1.txt
application_gethelp.txt
application_run4.txt
InputDefinitionTest.php
ArgvInputTest.php
InputOptionTest.php
ArrayInputTest.php
InputTest.php
StringInputTest.php
InputArgumentTest.php
ApplicationTest.php
CommandTest.php
ListCommandTest.php
HelpCommandTest.php
OutputFormatterTest.php
OutputFormatterStyleTest.php
OutputFormatterStyleStackTest.php
OutputTest.php
StreamOutputTest.php
NullOutputTest.php
ConsoleOutputTest.php
AbstractDescriptorTest.php
ObjectsProvider.php
JsonDescriptorTest.php
MarkdownDescriptorTest.php
TextDescriptorTest.php
XmlDescriptorTest.php
CommandTesterTest.php
ApplicationTesterTest.php
SymfonyStyleTest.php
ConsoleLoggerTest.php
TableTest.php
ProgressBarTest.php
QuestionHelperTest.php
HelperSetTest.php
ProgressIndicatorTest.php
ProcessHelperTest.php
FormatterHelperTest.php
HelperTest.php
TableStyleTest.php
SymfonyStyle
application_2.xml
application_2.json
application_2.md
application_1.xml
application_1.json
application_1.md
command_asxml.txt
definition_asxml.txt
application_2.txt
application_run2.txt
DescriptorCommand2.php
application_astext1.txt
Foo3Command.php
definition_astext.txt
DummyOutput.php
command_2.xml
FooCommand.php
application_1.txt
application_astext2.txt
application_renderexception3decorated.txt
command_astext.txt
TestCommand.php
application_run3.txt
DescriptorCommand1.php
FooSubnamespaced1Command.php
FooSubnamespaced2Command.php
Foo1Command.php
DescriptorApplication2.php
command_2.md
application_run1.txt
command_2.json
FoobarCommand.php
Foo2Command.php
input_definition_4.xml
application_renderexception3.txt
DescriptorApplication1.php
command_2.txt
application_renderexception4.txt
command_1.xml
application_renderexception2.txt
input_definition_4.md
input_definition_4.json
application_renderexception1.txt
input_option_2.xml
input_definition_3.xml
input_definition_2.xml
input_option_6.xml
input_argument_3.xml
input_option_5.xml
Foo6Command.php
input_option_3.xml
input_option_4.xml
input_option_6.md
command_1.json
input_argument_4.xml
input_option_5.md
input_option_2.md
input_definition_3.json
application_renderexception_doublewidth2.txt
Foo4Command.php
input_option_4.md
input_option_1.xml
BarBucCommand.php
input_argument_2.xml
input_definition_3.md
input_option_3.md
application_renderexception_doublewidth1decorated.txt
input_option_6.json
input_option_2.json
input_option_5.json
input_option_1.md
command_1.md
input_argument_1.xml
input_option_3.json
input_option_4.json
input_argument_4.md
input_option_1.json
input_argument_3.md
Foo5Command.php
input_definition_2.json
input_argument_2.md
input_definition_2.md
input_definition_4.txt
input_argument_3.json
input_argument_4.json
input_option_5.txt
input_argument_1.md
input_option_2.txt
input_option_4.txt
input_argument_2.json
command_1.txt
application_renderexception_doublewidth1.txt
input_argument_3.txt
input_definition_1.xml
input_argument_1.json
input_argument_4.txt
input_option_6.txt
input_option_3.txt
input_definition_3.txt
input_definition_2.txt
input_argument_2.txt
input_option_1.txt
input_definition_1.json
input_argument_1.txt
application_gethelp.txt
application_run4.txt
SymfonyStyle
InputDefinitionTest.php
ArgvInputTest.php
InputOptionTest.php
ArrayInputTest.php
InputTest.php
StringInputTest.php
InputArgumentTest.php
CommandTest.php
ListCommandTest.php
HelpCommandTest.php
OutputFormatterTest.php
OutputFormatterStyleTest.php
OutputFormatterStyleStackTest.php
OutputTest.php
StreamOutputTest.php
NullOutputTest.php
ConsoleOutputTest.php
AbstractDescriptorTest.php
ObjectsProvider.php
JsonDescriptorTest.php
MarkdownDescriptorTest.php
TextDescriptorTest.php
XmlDescriptorTest.php
CommandTesterTest.php
ApplicationTesterTest.php
SymfonyStyleTest.php
ConsoleLoggerTest.php
Table.php
ProgressBar.php
QuestionHelper.php
ProgressIndicator.php
TableStyle.php
ProcessHelper.php
DebugFormatterHelper.php
Helper.php
SymfonyQuestionHelper.php
FormatterHelper.php
DescriptorHelper.php
HelperSet.php
TableCell.php
HelperInterface.php
InputAwareHelper.php
TableSeparator.php
InputDefinition.php
ArgvInput.php
ArrayInput.php
Input.php
InputOption.php
InputInterface.php
InputArgument.php
StringInput.php
InputAwareInterface.php
TextDescriptor.php
XmlDescriptor.php
MarkdownDescriptor.php
JsonDescriptor.php
ApplicationDescription.php
Descriptor.php
DescriptorInterface.php
Command.php
ListCommand.php
HelpCommand.php
OutputFormatterStyle.php
OutputFormatter.php
OutputFormatterStyleStack.php
OutputFormatterInterface.php
OutputFormatterStyleInterface.php
Output.php
ConsoleOutput.php
OutputInterface.php
StreamOutput.php
NullOutput.php
BufferedOutput.php
ConsoleOutputInterface.php
SymfonyStyle.php
StyleInterface.php
OutputStyle.php
Question.php
ChoiceQuestion.php
ConfirmationQuestion.php
ApplicationTester.php
CommandTester.php
hiddeninput.exe
hiddeninput.exe
ConsoleExceptionEvent.php
ConsoleEvent.php
ConsoleCommandEvent.php
ConsoleTerminateEvent.php
ConsoleLogger.php
CommandNotFoundException.php
InvalidOptionException.php
InvalidArgumentException.php
RuntimeException.php
LogicException.php
ExceptionInterface.php
TableTest.php
ProgressBarTest.php
QuestionHelperTest.php
HelperSetTest.php
ProgressIndicatorTest.php
ProcessHelperTest.php
FormatterHelperTest.php
HelperTest.php
TableStyleTest.php
SymfonyStyle
application_2.xml
application_2.json
application_2.md
application_1.xml
application_1.json
application_1.md
command_asxml.txt
definition_asxml.txt
application_2.txt
application_run2.txt
DescriptorCommand2.php
application_astext1.txt
Foo3Command.php
definition_astext.txt
DummyOutput.php
command_2.xml
FooCommand.php
application_1.txt
application_astext2.txt
application_renderexception3decorated.txt
command_astext.txt
TestCommand.php
application_run3.txt
DescriptorCommand1.php
FooSubnamespaced1Command.php
FooSubnamespaced2Command.php
Foo1Command.php
DescriptorApplication2.php
command_2.md
application_run1.txt
command_2.json
FoobarCommand.php
Foo2Command.php
input_definition_4.xml
application_renderexception3.txt
DescriptorApplication1.php
command_2.txt
application_renderexception4.txt
command_1.xml
application_renderexception2.txt
input_definition_4.md
input_definition_4.json
application_renderexception1.txt
input_option_2.xml
input_definition_3.xml
input_definition_2.xml
input_option_6.xml
input_argument_3.xml
input_option_5.xml
Foo6Command.php
input_option_3.xml
input_option_4.xml
input_option_6.md
command_1.json
input_argument_4.xml
input_option_5.md
input_option_2.md
input_definition_3.json
application_renderexception_doublewidth2.txt
Foo4Command.php
input_option_4.md
input_option_1.xml
BarBucCommand.php
input_argument_2.xml
input_definition_3.md
input_option_3.md
application_renderexception_doublewidth1decorated.txt
input_option_6.json
input_option_2.json
input_option_5.json
input_option_1.md
command_1.md
input_argument_1.xml
input_option_3.json
input_option_4.json
input_argument_4.md
input_option_1.json
input_argument_3.md
Foo5Command.php
input_definition_2.json
input_argument_2.md
input_definition_2.md
input_definition_4.txt
input_argument_3.json
input_argument_4.json
input_option_5.txt
input_argument_1.md
input_option_2.txt
input_option_4.txt
input_argument_2.json
command_1.txt
application_renderexception_doublewidth1.txt
input_argument_3.txt
input_definition_1.xml
input_argument_1.json
input_argument_4.txt
input_option_6.txt
input_option_3.txt
input_definition_3.txt
input_definition_2.txt
input_argument_2.txt
input_option_1.txt
input_definition_1.json
input_argument_1.txt
application_gethelp.txt
application_run4.txt
InputDefinitionTest.php
ArgvInputTest.php
InputOptionTest.php
ArrayInputTest.php
InputTest.php
StringInputTest.php
InputArgumentTest.php
ApplicationTest.php
CommandTest.php
ListCommandTest.php
HelpCommandTest.php
OutputFormatterTest.php
OutputFormatterStyleTest.php
OutputFormatterStyleStackTest.php
OutputTest.php
StreamOutputTest.php
NullOutputTest.php
ConsoleOutputTest.php
AbstractDescriptorTest.php
ObjectsProvider.php
JsonDescriptorTest.php
MarkdownDescriptorTest.php
TextDescriptorTest.php
XmlDescriptorTest.php
CommandTesterTest.php
ApplicationTesterTest.php
SymfonyStyleTest.php
ConsoleLoggerTest.php
Table.php
ProgressBar.php
QuestionHelper.php
ProgressIndicator.php
TableStyle.php
ProcessHelper.php
DebugFormatterHelper.php
Helper.php
SymfonyQuestionHelper.php
FormatterHelper.php
DescriptorHelper.php
HelperSet.php
TableCell.php
HelperInterface.php
InputAwareHelper.php
TableSeparator.php
InputDefinition.php
ArgvInput.php
ArrayInput.php
Input.php
InputOption.php
InputInterface.php
InputArgument.php
StringInput.php
InputAwareInterface.php
TextDescriptor.php
XmlDescriptor.php
MarkdownDescriptor.php
JsonDescriptor.php
ApplicationDescription.php
Descriptor.php
DescriptorInterface.php
Application.php
Command.php
ListCommand.php
HelpCommand.php
OutputFormatterStyle.php
OutputFormatter.php
OutputFormatterStyleStack.php
OutputFormatterInterface.php
OutputFormatterStyleInterface.php
Output.php
ConsoleOutput.php
OutputInterface.php
StreamOutput.php
NullOutput.php
BufferedOutput.php
ConsoleOutputInterface.php
SymfonyStyle.php
StyleInterface.php
OutputStyle.php
Question.php
ChoiceQuestion.php
ConfirmationQuestion.php
ApplicationTester.php
CommandTester.php
hiddeninput.exe
ConsoleExceptionEvent.php
ConsoleEvent.php
ConsoleCommandEvent.php
ConsoleTerminateEvent.php
ConsoleLogger.php
CommandNotFoundException.php
InvalidOptionException.php
InvalidArgumentException.php
RuntimeException.php
LogicException.php
ExceptionInterface.php
CHANGELOG.md
ConsoleEvents.php
phpunit.xml.dist
composer.json
LICENSE
README.md
.gitignore

License & contributing

This project is maintained by codeagent. If you find out any problems, please let me know: this is open source project on github, you can create a new issue or open a pull request.

License: MIT


Created by codeagent. ©