My Life

映画、音楽、プログラミングTipsのブログ

プログラミング

[PHP]解説!Mustache【BLOCKS pragma】の使い方

投稿日:7月 1, 2018 更新日:

PHP用Mustacheの拡張機能 BLOCKS pragmaについてまとめます。

Mustacheとは(簡単に)

メリット

  • PHP直書きよりも、HTMLソースがシンプルになる。
  • テンプレートエンジンの中でもシンプルな部類なので、比較的習得しやすい。
  • 他言語版もある(汎用性が高い)

デメリット

  • 複雑な事は出来ない。(EX:文字列での判定処理など)
  • PHP側で、値をmustacheが出力できる様に調整しないといけない。

BLOCKS pragmaで何が出来るのか?

親ファイルの一部分を、子ファイルの内容に置換できます。

  • 使い時
    各ページの大枠となるHTMLを用意したい場合に便利です。

使い方【基本編】

  • 親ファイルの置換したい部分を{{$ 置換したい箇所名 }}{{/ 置換したい箇所名 }}で囲みます。
  • 子ファイルに置換後の内容を書き、上記と同じ記法で囲みます。
  • 置換後の内容は、{{< 置換する親ファイル名 }}{{/ 置換する親ファイル名 }}で囲む必要があります。

1つの親ファイルと、複数の子ファイルがある場合を例に解説します。

【前提】ディレクトリ構成

mustache.php
views
├contents
└layouts

CSS・Javascriptファイルの読込、タイトル、コンテンツ内容が置き換わるようにしています。

出力結果:

親ファイルの一部が、子ファイルの内容に置き換わります。

下記のように、読み込むファイルを変えれば置き換わる内容も変わります。↓

出力結果:

使い方【応用編】

①親ファイルを複数使う

複数の親ファイルを指定する事もできます。
例では、ヘッダー、ボディ、フッターで親ファイルを分けています。

出力結果:

{{< 親ファイル名 }}{{/ 親ファイル名 }}外に記載する

{{< 親ファイル名 }}{{/ 親ファイル名 }}の囲み外に記載した内容も出力されます。
親ファイルが1つの時はあまり使わないかと思います。①と組み合わせて使うのが良いかもしれません。

出力結果:

③親ファイルにデフォルト値を設定する

子ファイルに置換内容を記載しない場合、親ファイルの内容が表示されます。
基本的には親ファイルの内容を出力しておきたい、という場合に使えます。

出力結果:

注意

①パーシャルの呼び出しに似ているので注意が必要です。

{{< 親ファイル名 }}{{/ 親ファイル名 }}で囲んである部分の中で、{{$ 置換したい箇所名 }}{{/ 置換したい箇所名 }}で囲んでいない文字は出力されません。

まとめ

サンプルコードとともに使い方を解説しました。
個人的には結構便利な機能だと思います。

pragma使用時の注意として、PHP用Mustache限定の拡張機能なので、PHP用以外のmustacheには実装されていないと思われます(未調査)

参考文献

 

・本記事の作成に至った経緯(蛇足)
pragmaについては、公式Wikiに詳細が書かれていますが、
全編英語という事で、私なりに日本語でまとめようと思い本記事を作成しました。



-プログラミング
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

ファイル画像

【PHP】大量のファイル名を一括リネームする

仕事で大量ファイルをリネームしなければいけない時がありました。その際の行った事をメモ程度に記載します。 目次1 ロジック2 まとめ ロジック [crayon-5df61764188c475411170 …

テキストファイル画像1

【PHP】CSVファイルからINSERT文を生成する

こんにちは。tomoです。 仕事でGoogleスプレッドシートデータをDBに登録しなければいけない事があり、 スプレッドシート情報をCSV形式に変換したデータからINSERT文を生成するプログラムを作 …

[PHP]解説!Mustache【FILTERS pragma】の使い方

PHP用Mustacheの拡張機能 FILTERS pragma についてまとめます。 目次1 FILTERS pragmaで何が出来るのか?2 使い方3 注意4 FILTERS pragmaとLam …

[php]配列同士を比較する【for文不要】

配列同士に共通な値があるか否かは、array_intersect関数で判定可能です。

【参考】foreachの場合 [crayon-5 …

テキストファイル画像1

【PowerShell】WinMergeで複数ファイルをコマンドラインから比較する

ファイルの差分を見たい時、WinMergeは便利なツールです。 マウス操作でも問題ありませんが、数十件、数百件という大量ファイルの差分チェックは、スクリプトにお任せしましょう。 目次1 やること2 用 …