Download the PHP package dnl/mthaml without Composer
On this page you can find all versions of the php package dnl/mthaml. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package mthaml
Short Description HAML for PHP
License MIT
Homepage https://github.com/arnaud-lb/MtHaml
Informations about the package mthaml
Multi target HAML
MtHaml is a PHP implementation of the HAML language which can target multiple languages.
Currently supported targets are PHP and Twig, and new ones can be added easily.
Mt-Haml implements the exact same syntax as ruby-haml; the only difference is that any supported language can be used everywhere HAML expects Ruby code:
HAML/Twig:
Rendered:
HAML/PHP:
Rendered:
Usage
PHP:
Twig:
See examples and MtHaml with Twig
Escaping
MtHaml escapes everything by default. Since Twig already supports auto escaping it is recommended to enable it in Twig and disable it in MtHaml:
new MtHaml\Environment('twig', array('enable_escaper' => false));
HAML/PHP is rendered like this when auto escaping is enabled:
Twig
Using Twig in HAML gives more control over what can be executed, what variables and functions are exposed to the templates, etc. This also allows to use all of Twig's awesome features like template inheritance, macros, blocks, filters, functions, tests, ...
Integration in Twig
MtHaml comes with an example Twig_Loader that will automatically convert HAML into Twig at loading time (Twig will then compile the resulting Twig script and cache it). Templates with a .haml
extension, or whose source starts with {% haml %}
will be converted, and the others will be left untouched.
The loader acts as a proxy and takes an other loader as parameter:
Runtime support
Compiled MtHaml/Twig templates need support from MtHaml at runtime in some cases. Because of this, a Twig extension must be loaded before executing the templates.
Syntax
The syntax is the same as HAML/Ruby's syntax, except that PHP or Twig have to be used where Ruby is expected.
See the tutorial and the reference
Performance
MtHaml converts HAML to PHP or Twig code. The resulting code can be cached and executed any number of times, and doesn't depend on HAML at runtime.
MtHaml has no runtime overhead.
Helpers
Helpers in HAML/Ruby are just ruby functions exposed to templates. Any function can be made available to HAML templates by the target language (the function only have to be available at runtime).
In HAML/Twig you can use all of Twig's functions, filters, and tags. In HAML/PHP, you can use all PHP functions.
Filters
Filters take plain text input (with support for #{...}
interpolations) and transform it, or wrap it.
Example with the javascript
filter:
The following filters are available:
- css: wraps with style tags
- cdata: wraps with CDATA markup
- **coffee***: compiles coffeescript to javascript
- escaped: html escapes
- javascript: wraps with script tags
- **less***: compiles as Lesscss
- **markdown***: converts markdown to html
- php: executes the input as php code
- plain: does not parse the filtered text
- preseve: preserves preformatted text
- **scss***: converts scss to css
- twig: executes the input as twig code
Filter marked with *
have runtime dependencies and are not enabled by default. Such filters need to be provided to MtHaml\Environment explicitly.
Example with the Coffee filter:
Sass
Sass can be used in PHP projects without problem. It only depends on Ruby and does not need to be installed on production servers. So MtHaml will not re-implement Sass.
Frameworks and CMS support
- CakePHP: https://github.com/TiuTalk/haml
- Drupal: https://github.com/antoinelafontaine/oxide
- FuelPHP: https://github.com/fuel/parser
- Laravel (PHP): https://github.com/BKWLD/laravel-haml
- Laravel (Twig): https://github.com/SimonDegraeve/laravel-twigbridge
- PHPixie: https://github.com/dracony/PHPixie-HAML
- Silex: https://github.com/arnaud-lb/Silex-MtHaml
- Sprockets-PHP: https://github.com/Nami-Doc/Sprockets-PHP
- Symfony2: https://github.com/arnaud-lb/MtHamlBundle
- Yii2 Framework: https://github.com/mervick/yii2-mthaml
- Zend Framework 1: https://github.com/bonndan/mthaml-zf1
- PhileCMS: https://bitbucket.org/jacmoe/templatemthaml
Add yours: https://github.com/arnaud-lb/MtHaml/edit/master/README.markdown
License
MtHaml is released under the MIT license (same as HAML/Ruby).