「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
テンプレートモジュールとPHPによるモジュール化の違い
とある方から、以下のような質問を受けました。
Movable Typeで各テンプレートの共通部分を効率よく監理する方法として、テンプレートモジュールを使う方法と、PHPを使ってモジュール化する方法があります。
ただ、これらの違いがよく分からないので、教えてください。
エントリーのネタが切れていたので(笑)、今日はこのことについて書きたいと思います。
テンプレートモジュールとPHPによるモジュール化は、一見すると似ていますが、大きな違いがあります。
1.テンプレートモジュールの動作
テンプレートモジュールは、それを組み込む先のテンプレートとともに再構築されます。
そのため、組み込み先のテンプレートの種類によって、出力結果が変わる場合があります。
例えば、MTEntriesタグのコンテナをテンプレートモジュールにして、インデックステンプレートとアーカイブテンプレートに組み込んだとしてください。
この場合、インデックステンプレートでは、Blogのすべてのエントリーを対象にして、エントリーの一覧が出力されます。
一方、アーカイブテンプレートでは、そのアーカイブに属するエントリーの一覧が出力されます。
また、組み込んだ先のテンプレートとともに再構築されますので、同じ部分が何度も再構築されることが起こります。
例えば、MTBlogEntryCountタグを使ってBlogのエントリー数の情報を出力する部分を作り、それをテンプレートモジュールにするとしてください。
そして、そのテンプレートモジュールをエントリーアーカイブテンプレートに入れるとしてください。
すると、各エントリーのアーカイブページを出力するたびに、テンプレートモジュールの部分が再構築されることになります。
2.PHPによるモジュール化
PHPでモジュール化する場合、テンプレートモジュールとは違って、再構築済みのファイルを、別のphpのファイルに組み込む形になります。
例えば、前述の「MTEntriesタグのコンテナ」をPHPのモジュールにする場合、組み込み先のテンプレートの種類に関わらず、同じ結果が出力されることになります。
また、インデックステンプレートでモジュールを作り、それをPHPで他のテンプレートに組み込む場合、再構築時には、組み込み元のインデックステンプレートは1回再構築されるだけです。これも、テンプレートモジュールとは動作が異なります。
3.両者の使い分け
上記の話から、テンプレートモジュールと、PHPでのモジュール化とは、使い分けが必要です。
テンプレートモジュールは、同じタグの組み合わせであっても、テンプレートの種類によって出力が違ったり、ページごとに出力が違ったりする場合に使います。
一方、PHPによるモジュール化は、テンプレートの種類や、出力されるページに関係なく、同じ内容の出力をしたい場合に使います。