Search by

kodhe / table

karyakode

Kodhe table library

Package info

github.com/kodhe/table

pkg:composer/kodhe/table

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.1.0 2026-09-29 12:49 UTC

This package is not auto-updated.

Last update: 2026-09-29 21:49:06 UTC


README

A modular, maintainable, and testable table generation library following PSR-4/PSR-12 standards.

Features

  • Modular Architecture: Separated concerns using Builder, Strategy, Factory, and Value Object patterns
  • Backward Compatible: 100% compatible with CodeIgniter 3 Table library API
  • Extensible Renderers: Support for HTML and plain text rendering, easily extendable
  • Dependency Injection: Clean separation of concerns with injectable dependencies

Installation

composer require kodhe/table

Usage

Basic Usage

use Kodhe\Table\Table;

$table = new Table();

$table->set_heading('Name', 'Email', 'Role');
$table->add_row('John Doe', 'john@example.com', 'Admin');
$table->add_row('Jane Smith', 'jane@example.com', 'User');

echo $table->generate();

With Array Data

$data = [
    ['Name' => 'John Doe', 'Email' => 'john@example.com'],
    ['Name' => 'Jane Smith', 'Email' => 'jane@example.com']
];

echo $table->generate($data);

Custom Template

$template = [
    'table_open' => '<table class="my-table">',
    'heading_cell_start' => '<th class="header">',
    'cell_start' => '<td class="cell">'
];

$table->set_template($template);

Custom Renderer

use Kodhe\Table\Renderers\PlainTextRenderer;

$renderer = new PlainTextRenderer();
$table->setRenderer($renderer);

echo $table->generate();

Structure

table/
├── Table.php                 # Main facade class
├── Contracts/
│   ├── TableInterface.php    # Table contract
│   ├── RendererInterface.php # Renderer contract
│   └── TemplateInterface.php # Template contract
├── Builder/
│   ├── HeaderBuilder.php     # Header building logic
│   └── RowBuilder.php        # Row building logic
├── Renderers/
│   ├── HtmlRenderer.php      # HTML output renderer
│   └── PlainTextRenderer.php # Plain text renderer
├── Templates/
│   ├── DefaultTemplate.php   # Default template implementation
│   └── TemplateAdapter.php   # Template adapter for BC
├── Factory/
│   └── RendererFactory.php   # Renderer factory
├── Support/
│   ├── ColumnNormalizer.php  # Column data normalization
│   ├── TableValidator.php    # Table data validation
│   └── TemplateResolver.php  # Template resolution
└── ValueObjects/
    ├── TableCell.php         # Table cell value object
    ├── TableRow.php          # Table row value object
    └── TableDefinition.php   # Table definition value object

Design Patterns Used

  • Builder Pattern: For constructing complex table structures
  • Strategy Pattern: For interchangeable rendering strategies
  • Factory Pattern: For creating renderer instances
  • Value Object Pattern: For immutable table data representation
  • Dependency Injection: For clean separation of concerns

API Methods

All original CodeIgniter 3 Table methods are preserved:

  • set_heading() - Set table heading
  • set_columns() - Set table columns
  • add_row() - Add a table row
  • make_columns() - Create multi-dimensional array from flat array
  • set_template() - Set custom template
  • set_empty() - Set empty cell content
  • set_caption() - Set table caption
  • clear() - Clear table data
  • generate() - Generate table HTML

License

MIT