phpでHamlが使えるMtHamlを使ってみた

最近使っているTwigが正直好みではないので、phpの他のテンプレートエンジンって何があるだろうか。 Hamlもありそうかなぁということで調べたらすぐに出てきたので試してみた次第です。

MtHaml

MtHamlはHamlの記法でphpやTwigを出力することができるライブラリで、 Hamlをphpのプロジェクトに持ち込みたいあなたにオススメなライブラリです。

リポジトリ


https://github.com/arnaud-lb/MtHaml

使い方

1
composer require mthaml/mthaml

以下サンプル

事前準備

index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

require_once 'vendor/autoload.php';

$users = [
  [
      'id' => 1,
      'name' => 'takuya nishio'
  ],
  [
      'id' => 2,
      'name' => 'naoki nishio'
  ],
  [
      'id' => 3,
      'name' => 'noriko nishio',
  ],
  [
      'id' => 4,
      'name' => 'haruki nishio',
  ]
];

$haml = new MtHaml\Environment('php');
$executor = new MtHaml\Support\Php\Executor($haml, array(
    'cache' => sys_get_temp_dir().'/haml',
));

$executor->display('template.haml',[
  'users' => $users
]);

テンプレートファイル

template.haml
1
2
3
4
5
6
%ul#users
  - foreach($users as $user)
    %li.user
      = $user['id']
      Name: #{$user['name']}
      %a(href=$user['id']) Home page

Compileされたファイル

1
2
3
4
5
6
7
8
9
<ul id="users">
  <?php foreach($users as $user) { ?>
    <li class="user">
      <?php echo $user['id']; ?>
      Name: <?php echo $user['name']; ?>
      <a href="<?php echo $user['id']; ?>">Home page</a>
    </li>
  <?php } ?>
</ul>

以下雑感

  • Hamlをそこまで知らないのだけど、短くて便利な気はする
  • Smartyとかよりちょっといいとかそんなレベル。
  • 吐かれるphpのSytaxが気に入らない (<?php } ?>が腹立つ 素のphpをテンプレートを使うときはコロン使え)
  • しかし、そもそもテンプレートエンジンが面倒で、余計な事を覚えたくないゆとりphperなので使うことはないと思っている。
  • asp_tagsバンザイ