icanboogie / render
Renders templates with a variety of template engines.
Installs: 2 098
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 1
Requires
- php: >=5.6
- icanboogie/event: ^3.0
README
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:
- EngineProvider\Container: Provides engines from a PSR container.
- EngineProvider\Immutable: Provides engines from an immutable collection.
- EngineProvider\Mutable: Provides engines from a mutable collection.
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.
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.