phplucidframe/console-table

Console Table

Maintainers

👁 cithukyaw

Package info

github.com/phplucidframe/console-table

pkg:composer/phplucidframe/console-table

Statistics

Installs: 698 753

Dependents: 29

Suggesters: 0

Stars: 102

Open Issues: 2

v1.4.0 2025-05-27 14:28 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 8a3a571f6523e323f28d3a31d9991394c9db75f8

  • Sithu <sithu.woop@phplucidframe.com>

This package is auto-updated.

Last update: 2026-06-28 19:03:35 UTC


README

ConsoleTabe makes you easy to build console style tables. It helps you to display tabular data in terminal/shell. This is a component of PHPLucidFrame.

License: MIT

Composer Installation

composer require phplucidframe/console-table

Example 1: Bordered Table (Default)

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->addHeader('Language')
 ->addHeader('Year')
 ->addRow()
 ->addColumn('PHP')
 ->addColumn(1994)
 ->addRow()
 ->addColumn('C++')
 ->addColumn(1983)
 ->addRow()
 ->addColumn('C')
 ->addColumn(1970)
 ->display()
;

You can also print the table using getTable method such as echo $table->getTable();

Output:

+----------+------+
| Language | Year |
+----------+------+
| PHP | 1994 |
| C++ | 1983 |
| C | 1970 |
+----------+------+

Example 2: Bordered Table with Padding Width 2

You can also use setHeaders() and addRow with Arrays.

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->setHeaders(array('Language', 'Year'))
 ->addRow(array('PHP', 1994))
 ->addRow(array('C++', 1983))
 ->addRow(array('C', 1970))
 ->setPadding(2)
 ->display()
;

Output:

+------------+--------+
| Language | Year |
+------------+--------+
| PHP | 1994 |
| C++ | 1983 |
| C | 1970 |
+------------+--------+

Example 3: Bordered Table with Left Margin Width 4

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->setHeaders(array('Language', 'Year'))
 ->addRow(array('PHP', 1994))
 ->addRow(array('C++', 1983))
 ->addRow(array('C', 1970))
 ->setIndent(4)
 ->display()
;

Output:

 +----------+------+
 | Language | Year |
 +----------+------+
 | PHP | 1994 |
 | C++ | 1983 |
 | C | 1970 |
 +----------+------+

Example 4: Non-bordered Table with Header

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->setHeaders(array('Language', 'Year'))
 ->addRow(array('PHP', 1994))
 ->addRow(array('C++', 1983))
 ->addRow(array('C', 1970))
 ->hideBorder()
 ->display()
;

Output:

 Language Year
----------------
 PHP 1994
 C++ 1983
 C 1970

Example 5: Non-bordered Table without Header

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->addRow(array('PHP', 1994))
 ->addRow(array('C++', 1983))
 ->addRow(array('C', 1970))
 ->hideBorder()
 ->display()
;

Output:

 PHP 1994
 C++ 1983
 C 1970

Example 6: Table with all borders

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->setHeaders(array('Language', 'Year'))
 ->addRow(array('PHP', 1994))
 ->addRow(array('C++', 1983))
 ->addRow(array('C', 1970))
 ->showAllBorders()
 ->display()
;

Alternatively, you can use addBorderLine() for each row.

$table
 ->setHeaders(array('Language', 'Year'))
 ->addRow(array('PHP', 1994))
 ->addBorderLine()
 ->addRow(array('C++', 1983))
 ->addBorderLine()
 ->addRow(array('C', 1970))
 ->display()
;

Output

+----------+------+
| Language | Year |
+----------+------+
| PHP | 1994 |
+----------+------+
| C++ | 1983 |
+----------+------+
| C | 1970 |
+----------+------+

Example 7: Table with Column Alignment

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->addHeader('A')
 ->addHeader('B', ConsoleTable::ALIGN_RIGHT) # ALIGN_LEFT or ALIGN_RIGHT (ALIGN_LEFT is default)
 ->addHeader('C')
 ->addRow()
 ->addColumn('X')
 ->addColumn('Hello', null, null, ConsoleTable::ALIGN_RIGHT)
 ->addColumn('Nice')
 ->addRow()
 ->addColumn('Y')
 ->addColumn('Hello, how are you?')
 ->addColumn('OK', null, null, ConsoleTable::ALIGN_RIGHT)
 ->display();

Output

+---+---------------------+------+
| A | B | C |
+---+---------------------+------+
| X | Hello | Nice |
| Y | Hello, how are you? | OK |
+---+---------------------+------+

Example 8: Bordered Table with Header & Footer

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->addHeader('Name')
 ->addHeader('Age')
 ->addRow()
 ->addColumn('John')
 ->addColumn(25, null, null, ConsoleTable::ALIGN_RIGHT)
 ->addRow()
 ->addColumn('Jane')
 ->addColumn(23, null, null, ConsoleTable::ALIGN_RIGHT)
 ->addFooter('Total')
 ->addFooter('48', ConsoleTable::ALIGN_RIGHT)
 ->display();

Output

+-------+-----+
| Name | Age |
+-------+-----+
| John | 25 |
| Jane | 23 |
+-------+-----+
| Total | 48 |
+-------+-----+

Example 9: Non-bordered Table with Header & Footer

$table = new LucidFrame\Console\ConsoleTable();
$table
 ->setHeaders(array('Name', 'Age'))
 ->addRow(array('John', 25))
 ->addRow(array('Jane', 23))
 ->setFooters(array('Total', 48))
 ->hideBorder()
 ->display();

Output

Name Age 
-----------
John 25 
Jane 23 
-----------
Total 48 

Test

With PHPUnit, you can run this in your terminal.

composer install
vendor\bin\phpunit tests

Without PHPUnit, you can simply run this in your terminal.

php example.php