
宜しくお願いします。
Smarty を使用して PHPを勉強しています。
Smartyのデフォルトを変更しようと、
「MySmarty」として新規にクラスを作成しました。
ソースの先頭で、
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
として、ROOT_DIRにルートディレクトリまでのパスを記憶させています。
全ソースは下記をごらんくらさい。
そこで、
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
にある、最後の ."/.."); が納得いきません。。。
最初の . ピリオドは連結のためのものだとわかりますが、
あとの/.. はディレクトリの階層をあげる指示ですよね?
てなると、クラスの定義のなかで使用するルートディレクトリへのパス
が、
おかしく思えてきます。書籍の通りにやっているので、
この通りにやるとうまくいっていますが、自分的になっとくがいかなく・・。
ソースは下記のようになってます。
特に $this->template_dir のテンプレートディレクトリへのパスを
再設定しているところですが、
ROOT_DIR."/templates"
ということは、ルート/../templates となりますよね?
作業フォルダの図はこの通りです。↓
C:\xampp
|
libs
|-MySmarty.class.php (下記のソースファイル)
|
|
templates
|-input.tpl
|
templates_c
<省略>
なんとなくですが、ルート/../templates ではなくて、
ルート/templates なようなきがします。
わかりにくい説明だったかもしてませんが、何卒宜しくお願いいたします。
______________________________
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
require_once("Smarty.class.php");
class MySmarty extends Smarty {
function MySmarty (){
$this->template_dir = ROOT_DIR."/templates";
$this->compile_dir = ROOT_DIR."/templates_c";
$this->left_delimiter = "{{";
$this->right_delimiter = "}}";
$this->default_modifiers = array('escape');
$this->Smarty();
}
}
____________________________
No.1ベストアンサー
- 回答日時:
おそらく/templatesディレクトリと/templates_cディレクトリを、Apacheで設定したドキュメントルート(DocumentRoot)の一つ上の階層に設置しているのだと思います。
なので
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
$this->template_dir = ROOT_DIR."/templates";
$this->compile_dir = ROOT_DIR."/templates_c";
という記述なのでしょう。
参考にされている書籍は、どの環境でも動くように質問者さんが気になるような書き方をしているのだと思います。
記述が気になるようでしたら、フルパスで記述すればよろしいのでは?
例)
$this->templates_dir = "/PATH/TO/templates";
$this->compile_dir = "/PATH/TO/templates_c";
最初の
define("ROOT_DIR", xxxx);
は、「ROOT_DIR」を定数として定義しておきたいかどうかで自由に記述すればよいと思います。
この回答への補足
お礼を申し上げるのが大変遅くなってしまい申し訳ございません。
ご丁寧に回答いただきとても感謝しております。
いろいろ調べまくって、なんとなくわかってきた気がするのですが、
1点だけ納得できない箇所がありまして・・・。
$this->template_dir = ROOT_DIR . "/templates";
とコードがあるのですが、
これはつまり、
C:/xampp/htdocs/../templates
ということなのでしょうか?
$_SERVER['DOCUMENT_ROOT'] が返すのは、
●xampp/htdocs となるルートディレクトリですよね。
そもそも、【 xampp/htdocs/../templates 】
という相対パスの指定のしかたが変だとおもいました。
(これで合っているんでしょうけど・・・。)
いま思うのは、
【 ../templates 】 とだけなら、
下記にあります<MySmarty.class.php >からの相対パスだと
納得できるのですが・・・。
どうして、'DOCUMENT_ROOT'がパスの先頭にくっつくのでしょうか?・・・。再度ご教授くださると大変ありがたいです。
よろしくお願いいたします。
C:\xampp
|-htdocs
| |-phplesson
|
|-libs
| |-MySmarty.class.php (←このファイルからのパス)
|
|
templates
| |-input.tpl
|
templates_c
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Makefile.inとMakefile.am
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
wordpressの記事をカスタマイズ...
-
現在位置より2つ上のディレク...
-
アプリケーション・ディレクト...
-
glob関数で日本語文字が取得で...
-
拡張子を隠すのは良い事なので...
-
visualstudioでc#のdllができない
-
PHP+PostgreSQLで画像処理につ...
-
ファイルアップローダ+複数の...
-
このアクセス解析の設置ができ...
-
Subversionのリポジトリの削除
-
システムディレクトリ以外の場...
-
Subversionで、ファイルをリネ...
-
Permission denied in
-
fopenでファイルが開かない場合...
-
バッチを用いたフォルダの自動移動
-
サブディレクトリ内の参照
-
PHPでfatal errorが出ても無視...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
CFileDialogの最初のディレクト...
-
FTPでのファイルとディレクトリ...
-
visualstudioでc#のdllができない
-
VB.NET 最下位のディレクトリ名...
-
MkDir関数
-
現在位置より2つ上のディレク...
-
DLL のロードの順序
-
rmdirでフォルダが消せません
-
Subversionで、ファイルをリネ...
-
絶対パス?絶対アドレス?意味...
-
define でのルートディレクト...
-
Visual C++ 2005 Express Editi...
-
ツリーメニューを縮小させたい
-
JAVA内で複数のファイルを削除...
-
fopenでファイルが開かない場合...
-
Smarty includeでテンプレート...
おすすめ情報