PHP Classes

File: Readme.md

Recommend this page to a friend!
  Classes of Juan Camacho   Hypertool   Readme.md   Download  
File: Readme.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Hypertool
Compose and generate HTML pages from objects
Author: By
Last change: refactor: Add Composer support with Hypertool\Html namespace
feat: Add HTMX and Hyperscript support with ScriptManager and update README
Expand HTML element coverage: add all HTML5 and deprecated elements, static factory methods, usage examples, and update README
Date: 18 days ago
Size: 6,277 bytes
 

Contents

Class file image Download

HTML Element Generator

License: MIT HTMX Hyperscript

Overview

This PHP library provides a comprehensive, extensible, and fluent interface for generating HTML elements, including full support for all HTML5 and deprecated elements. It features:

  • Dedicated PHP classes and static factory methods for every HTML element
  • Fluent attribute and child management
  • Comprehensive support for HTMX and Hyperscript
  • Automated, environment-aware script injection with robust error handling
  • Usage examples and documentation in every element class file

Table of Contents

Features

  • All HTML5 and deprecated elements as PHP classes
  • Static factory methods for all elements via `HtmlElement::elementname()`
  • Fluent interface for setting attributes and adding children
  • Usage examples in every element class file
  • HTMX and Hyperscript support with dedicated setters
  • Automated, environment-aware script injection (see ScriptManager)
  • Easily extensible for future HTML elements and frontend libraries

Setup

  1. Install via Composer:
    composer require hypertool/html
    
  2. Include the Composer autoloader in your project:
    require_once 'vendor/autoload.php';
    
  3. Use the namespaced classes:
    use Hypertool\Html\HtmlElement;
    use Hypertool\Html\ScriptManager;
    // ... etc.
    
  4. (Optional) Configure environment: - Set the `APP_ENV` environment variable to `production` for local asset loading, or leave unset for CDN loading.

Usage

Basic Usage

// Assumes autoloader is included as per Setup instructions
use Hypertool\Html\HtmlElement;
use Hypertool\Html\H1; // Example specific element

// Using the generic HtmlElement class
$html = new HtmlElement('div');
$html->setId('myDiv')->setClass('some-class');
$html->add_child('MainTitle','h1')->text('Hello, World!')->setClass('title');
$html->MainTitle->setStyle('color: blue;');
echo $html->output();

Using Dedicated Element Classes

// Assumes autoloader is included and 'use Hypertool\Html\Div;' is present
$div = new Div('Content inside div');
echo $div->output();

Using Static Factory Methods

// Assumes autoloader is included and 'use Hypertool\Html\HtmlElement;' is present
$div = HtmlElement::div('Content inside div');
echo $div->output();

Usage Examples in Element Files

Each element class file (e.g., src/b.php, src/section.php) contains a usage example at the end, demonstrating both direct instantiation and static factory usage.

HTMX & Hyperscript

This library provides comprehensive support for HTMX and Hyperscript:

  • Dedicated setters for all official HTMX attributes and events (e.g., `setHxGet`, `setHxPost`, `setHxTrigger`, `setHxSwap`, etc.)
  • Dedicated setter for Hyperscript's _ attribute (`setHyperscript`)
  • HTMX event support via `setHxOn($event, $handler)`

HTMX Usage Example

// Assumes autoloader is included and 'use Hypertool\Html\HtmlElement;' is present
$button = HtmlElement::button('Load Data')
    ->setHxGet('/api/data')
    ->setHxTarget('#result')
    ->setHxSwap('outerHTML');
echo $button->output();

Hyperscript Usage Example

// Assumes autoloader is included and 'use Hypertool\Html\HtmlElement;' is present
$button = HtmlElement::button('Click Me')
    ->setHyperscript('on click add .clicked to me');
echo $button->output();

Combining HTMX and Hyperscript

// Assumes autoloader is included and 'use Hypertool\Html\HtmlElement;' is present
$button = HtmlElement::button('Load & Animate')
    ->setHxGet('/api/data')
    ->setHyperscript('on htmx:afterSwap add .animated to #result');
echo $button->output();

Automated Script Injection

Use the ScriptManager class (now namespaced) for robust, environment-aware script loading:

// Assumes autoloader is included and 'use Hypertool\Html\ScriptManager;' is present

// In your page/component:
ScriptManager::requireHtmx();
ScriptManager::requireHyperscript();

// In your layout/footer (once per page):
echo ScriptManager::outputScripts();

  • Loads from CDN in development, local assets in production
  • Prevents duplicate inclusions
  • Adds error handling and a <noscript> fallback

Coverage

  • All HTML5 elements and most deprecated elements are included.
  • Deprecated elements (e.g., `<marquee>`, `<font>`, `<center>`, etc.) are supported for legacy compatibility.
  • For a full list of supported elements, see `src/html_elements_master_list.php`.

Contribution Guidelines

We welcome contributions! To contribute:

  1. Fork the repository and create a new branch.
  2. Add or update code, tests, or documentation.
  3. Ensure your code follows the project's style and passes any tests.
  4. Submit a pull request with a clear description of your changes.

To add new HTML elements or attributes: - Create a new PHP class in src/ for the element. - Add usage examples at the end of the file. - If adding new HTMX/Hyperscript features, update the relevant setters and documentation.

To report bugs or request features: - Open an issue on GitHub. // Updated link

License

This project is licensed under the MIT License.

Links