Download the PHP package djmattyg007/handlebars without Composer
On this page you can find all versions of the php package djmattyg007/handlebars. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download djmattyg007/handlebars
More information about djmattyg007/handlebars
Files in djmattyg007/handlebars
Package handlebars
Short Description PHP implementation of Handlebars templates aiming to match the JS interface.
License MIT
Homepage https://github.com/djmattyg007/handlebars
Informations about the package handlebars
Handlebars for PHP
Install
composer require djmattyg007/handlebars
Introduction
This is a PHP implementation of Handlebars templates that aims to match the interface of the JS implementation. It does not provide some of the niceties found in other similar PHP libraries, such as loading templates from files.
This is a fork of the Handlebars package from the Eden framework. It has been refactored to not rely on the magic provided by the Core package from Eden, and to not treat most of the classes as singletons. It also takes advantage of scalar type declarations available in PHP 7.
Basic Usage
Instantiating the Handlebars class
There are several parts to the Handlebars object. The first is the Runtime object. The Runtime is what ends up containing all helpers and partials. It is passed to Templates when they are compiled, and also the Compiler for use during compilation.
Next, we need a factory to generate Argument Parsers. This itself requires a factory to generate Argument Lists.
The Compiler has three dependencies: the Runtime, a factory to produce Tokenizers, and a factory to produce Argument Parsers. Each time a new Template is compiled, a new Tokenizer is created using the Tokernizer factory. While a template is being compiled, a new Argument Parser is created using the Argumetn Parser factory whenever a non-partial tag is found in the template.
Finally, we instanstiate the actual Handlebars object. This is the object you'll be interacting with to register helpers and partials, and to compile templates. It has three dependencies: the Runtime, the Compiler, and a factory to produce Data objects. Data objects are used to help easily navigate the context provided when rendering a Template.
It is recommended that you use a dependency injection system to handle construction of the main Handlebars object, so that the only part you need to worry about is registering your helpers and partials, and actually compiling your templates.
Alternatively, you can use a new convenience function for when you don't care about swapping out any of the components:
The newInstance()
method accepts the same boolean parameter as the Runtime
constructor, so you
can still easily prevent the automatic addition of the default helpers.
Rendering
Registering Helpers
Registering Partials
Features
- PHP API - designed to match the handlebars.js documentation
- registerHelper() - matches exactly what you expect from handlebars.js (except it's PHP syntax)
- registerPartial() - accepts strings and functions as callbacks
- Literals like
{{./foo}}
and{{../bar}}
are evaluated properly - Comments like
{{!-- Something --}}
and{{! Something }}
supported - Trims like
{{~#each}}
and{{~foo~}}
supported - Mustache backwards compatibility
{{#foo}}{{this}}{{/foo}}
- SafeString class, to allow helpers to return HTML
- Default Helpers matching handlebars.js
- if
- each - and
{{#each foo as |value, key|}}
- unless
- with
Production Ready
When your templates are ready for a production (live) environment, it is recommended that caching be used. To enable cache:
- Create a cache folder and make sure permissions are properly set for handlebars to write files to it.
- Enable cache by using
$handlebars->setCachePath(__DIR__ . '/your/cache/folder/location');
- The code will not attempt to create the specified folder if it doesn't exist.
API
compile
Returns a template object containing the compiled code for the supplied template string.
Usage
Parameters
string $string
- the template string
Returns an instance of MattyG\Handlebars\Template
- call render() on the template object (or use
it as a callable) to render it.
Example
registerHelper
Register a helper to be used within templates.
Helpers can return an instance of the SafeString class to ensure that the returned content is not escaped by the compiler.
Note that unlike the JS implementation of Handlebars, the concept of "this" is not bound to the current context inside of a helper. This is actually a freedom: it allows you to use any type of callable you wish.
Usage
Parameters
string $name
- the name of the helpercallable $helper
- the helper handler
Example
registerPartial
Registers a reusable partial template for use within other templates
Usage
Parameters
string $name
- the name of the partialstring $partial
- the template string of the partial
Example
setCachePath
Enables caching of compiled templates.
Usage
Parameters
string $cachePath
- The path to store cached copies of compiled templates
Example
setNamePrefix
Sets the name prefix for compiled templates. This is used to avoid conflicts when generating templates.
Usage
Parameters
string $namePrefix
- Custom prefix name
Example
Contributing
All contributions are welcome. Ideally, all code contributions will come with new or updated tests :)
All versions of handlebars with dependencies
ext-mbstring Version *