テンプレートファイルのディレクトリ構成

テンプレートファイルのディレクトリ構成について思うこと。

例えば、PHPSmarty等を利用して、PHPファイルとテンプレート(.tpl)ファイルを分離する仕組みにしたとする。
DocumentRoot は html で、テンプレートディレクトリは template にした場合、こんな感じになるかと思う。

.
|-- html
|   |-- index.php
|   |-- cat
|   |   `-- index.php
|   |-- cheetah
|   |   `-- index.php
|   |-- jaguar
|   |   `-- index.php
|   |-- kitty
|   |   `-- index.php
|   |-- leopard
|   |   `-- index.php
|   |-- lion
|   |   `-- index.php
|   |-- panther
|   |   `-- index.php
|   |-- puma
|   |   `-- index.php
|   `-- tiger
|       `-- index.php
`-- template
    |-- index.tpl
    |-- cat
    |   `-- index.tpl
    |-- cheetah
    |   `-- index.tpl
    |-- jaguar
    |   `-- index.tpl
    |-- kitty
    |   `-- index.tpl
    |-- leopard
    |   `-- index.tpl
    |-- lion
    |   `-- index.tpl
    |-- panther
    |   `-- index.tpl
    |-- puma
    |   `-- index.tpl
    `-- tiger
        `-- index.tpl


実行ファイルのディレクトリとテンプレートディレクトリの分離はセキュリティ的に安全というか、デザイナとプログラマの責務が明確になるというか、システムの教科書的には美しいのかなと思う。

が、

正直、運用を考えるとこの仕組みは使いにくい。
運用が安定してしまったら、PHPファイル群「だけ」、テンプレート群「だけ」を一気阿世に修正するという作業は実はあまり発生しない。
大体は1コンテンツを修正したり追加したりであり、ディレクトリを行ったり来たりするという動作が相当億劫だから。
システム改修が半年に1度とかならまぁなんとかなるだろうけど、1週間に1度なんやかんや発生するとなればその動作が結構うんざりするし、
ってことは、改修作業そのものがめんどくさくなって、それはあまりよくないぞ、と。
・・・ってかさ、ディレクトリの切り替え動作って非本質的だよね。

なので、やっぱりこういうディレクトリ構成にしてしまう。

.
`-- html
    |-- index.php
    |-- index.tpl
    |-- cat
    |   |-- index.php
    |   `-- index.tpl
    |-- cheetah
    |   |-- index.php
    |   `-- index.tpl
    |-- jaguar
    |   `-- index.php
    |-- kitty
    |   |-- index.php
    |   `-- index.tpl
    |-- leopard
    |   |-- index.php
    |   `-- index.tpl
    |-- lion
    |   |-- index.php
    |   `-- index.tpl
    |-- panther
    |   |-- index.php
    |   `-- index.tpl
    |-- puma
    |   |-- index.php
    |   `-- index.tpl
    `-- tiger
        |-- index.php
        `-- index.tpl

これだと、1コンテンツを修正するのに複数のディレクトリを行き来する必要がなくなる。

あと、.tpl ファイルへの直接アクセスは避けたいので .htaccess ( or httpd.conf )は以下の設定にしておく。

<Files ~ ".tpl$">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

これでセキュリティ的にも一安心。
デザイナーにも 「PHPファイルは触るなよ」と睨んでおく。

って、この仕組みってなんかデメリットあるかな。
まずそうなところがあれば突っ込んで欲しい感じ。

テンプレート化対象のディレクトリが少なければ一番最初のプランでもいいのだろうけどね。