• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smartyでテンプレートの場所を指定する方法)

Smartyでテンプレートの場所を指定する方法

このQ&Aのポイント
  • Smartyでテンプレートファイルの場所を指定する方法をまとめました。
  • Smartyのテンプレートファイルのパスなどの指定方法や、環境設定の値や設定ファイルのファイル名やパスの書き方について説明します。
  • PHPではプログラムで使う値を一般的にはサーバー起動時に設定ファイルから読み込む方法があります。また、Smartyに限らず、PHPでは設定ファイルや環境変数に関してプログラムファイルに書くかどうかはケースバイケースです。

質問者が選んだベストアンサー

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

Javaは分かりませんが、PHPではファイルの置場所も任意ですから、まず冒頭部分では define();とrequire()がずらずらと何行も並ぶ事は普通です。(スクリプト内での使用時にrequireしても動きますが、見通しが悪くなるため先頭にまとめて書くのが慣例) 一応ライブラリなどはパスを通しておけばファイル名だけで済みます。 set_include_path("/path/mylib"); require("aaa.php"); require("bbb.php"); http://jp2.php.net/manual/ja/function.set-include-path.php または、未定義のクラスが呼ばれた場合に発動する spl_autoload_register()関数があり、 function my_autoload($className) { include_once($className.'.class.php'); } spl_autoload_register('my_autoload'); などとしておけば、いちいちrequireせず、いきなり $obj = new OBJ(); と書くこともできます。 http://jp2.php.net/manual/ja/language.oop5.autoload.php 主要なファイル群はrequireし、それ以外はspl_autoload_register()、と併用してもよいかと。 回答としては [a]>Smartyのテンプレートファイルのパスなどは、どこにどう書くことが多いのか? 素直なのは設定ファイルにて define('SMARTY_TEMPLATE_PATH','/path/template'); と表に出しておいて、[拡張セットアップ]のようにViewのコンストラクタやメンバ変数で当てる事になるかと。 [b]>プログラムファイル(.php)に書くのがあたりまえなのか? 分かりやすくするため、設定部分を config.phpとか 更に規模に応じて defines.php, requires.php と切り分けたり、拡張子を .inc /.inc.php等にしたりすることもありますが、基本的にはそうなります。 [c]>サーバー起動時に設定値・設定ファイルを読み込む一般的な仕組みがあるか? Webサーバなので「要求があった時」になりますが.htaccessにて php_value auto_prepend_file /path/setup.php とすれば、当該ディレクトリ以下で自動的に実行されます。 http://www.php.net/manual/ja/ini.core.php#ini.auto-prepend-file また、任意の値を環境変数として欲しいなら、.htaccessにて SetEnv SMARTY_DIR /path/Smarty/libs とすれば、$_SERVER['SMARTY_DIR']で取得できることはできます。 ※ただし現在主流のMVCでは、何千ページあろうと全てコントローラを通りrequireを記述する場所は1個所でそこに記述すればよいので、上.htaccessを使う方法はあまり意味がありません。また設定が散らかる・環境変数を汚す等の理由で嫌う人もいます。 ちなみにphp.iniはレンタルサーバでは触る権限がない事も多く、php.iniの編集が必要な仕様にすることはまずありません。 ご参考になれば。

pringlez
質問者

お礼

>PHPではファイルの置場所も任意ですから、まず冒頭部分では >define();とrequire()がずらずらと何行も並ぶ事は普通です。 >[b]>プログラムファイル(.php)に書くのがあたりまえなのか? >…基本的にはそうなります。 なるほど…。PHPはそういう文化なのですね…。 Javaではファイル名・ファイルパスなど環境依存の値をプログラムファイルに書くことはまず許されませんし「もしもそのファイル名が変わったら」などと思うと全ファイルを修正するのかと恐ろしくもなりますが、PHPにJavaの文化を持ち込まずにPHPの慣例に従おうと思います。参考になります。 >[a]>Smartyのテンプレートファイルのパスなどは、どこにどう書くことが多いのか? >素直なのは設定ファイルにて >define('SMARTY_TEMPLATE_PATH','/path/template'); >と表に出しておいて、[拡張セットアップ]のように >Viewのコンストラクタやメンバ変数で当てる事になるかと。 なるほど。そのようにします。 >Webサーバなので「要求があった時」になりますが.htaccessにて >php_value auto_prepend_file /path/setup.php >とすれば、当該ディレクトリ以下で自動的に実行されます。 一応、近い仕組みがあるのですね。AOPが簡単に実現できるというわけですね。これは便利ですね。でも最近はCakePHPとかのフレームワークを使って、別の仕組みで実現するので使用する機会は少ないという感じですかね。なるほど。 今回は初めてPHPをつかう事とDBすら使わない内容なので、フレームワークは使わないことにしました。なので今回はとりあえず「.htaccess」を使う方法を試してみようと思います。しかし、次に作るものではDBを使用するためフレームワークを使用してみようと思います。 質問の意図を十分に汲み取り、また一つ一つ丁寧に答えていただき大変参考になりました。大変助かりました。ありがとうございました

関連するQ&A