icanboogie/render

Renders templates with a variety of template engines.

Maintainers

👁 olvlvl

Package info

github.com/ICanBoogie/Render

Homepage

pkg:composer/icanboogie/render

Statistics

Installs: 2 178

Dependents: 4

Suggesters: 0

Stars: 0

Open Issues: 1

v0.6.0 2018-03-17 23:51 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

BSD-3-Clause 6b9900c3f60037b02b64ff8c12e1277fa664dea4

renderdecorate

This package is auto-updated.

Last update: 2026-06-29 01:33:06 UTC


README

👁 Release
👁 Code Coverage
👁 Downloads

An API to render templates with a variety of template engines.

Installation

composer require icanboogie/render

Render engines

Templates may be rendered with a variety of template engines.

The following example demonstrates how to create an engine provider with the builtin engine for PHP templates.

<?php

/* @var ICanBoogie\Render\PHPEngine $engine */
/* @var string $template_pathname */
/* @var mixed $content */
/* @var array<string, mixed> $variables */

$rendered = $engine->render($template_pathname, $content, $variables);

Note: Currently, the package only provides an engine to render PHP templates, the available engine can be extended with third parties packages such as render-engine-markdown or render-engine-patron.

Render engine providers

Render engines are obtained through engine providers. The following providers are builtin:

The following examples demonstrates how to obtain an engine for a .php extension from an immutable provider.

<?php

use ICanBoogie\Render\EngineProvider\Immutable;
use ICanBoogie\Render\PHPEngine;

$engines = new Immutable([ '.php' => new PHPEngine() ]);
echo $engines->engine_for_extension('.php')::class; // ICanBoogie\Render\PHPEngine

All engine providers are traversable, this feature can be used to collect the supported extensions:

<?php

/* @var EngineProvider $engines */

$extensions = array_keys(iterator_to_array($engines));

echo implode(', ', $extensions); // .php

The pathname of the template being rendered

Engines should use the Engine::VAR_TEMPLATE_PATHNAME variable to define the pathname of the template being rendered, so that it is easy to track which template is being rendered and from which location.

Template resolver

A template resolver tries to match a template name with an actual template file. A set of paths can be defined for the resolver to search in.

Renderer

A Renderer instance is used to render a template with a subject and options. An engine collection and a template resolver are used to find suitable templates for the rendering.

Continuous Integration

The project is continuously tested by GitHub actions.

👁 Tests
👁 Static Analysis
👁 Code Style

Code of Conduct

This project adheres to a Contributor Code of Conduct. By participating in this project and its community, you're expected to uphold this code.

Contributing

See CONTRIBUTING for details.