![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
宜しくお願いします。
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ランキング
-
バッチを用いたフォルダの自動移動
-
UWSCでファイルのアップロード...
-
FTPでのファイルとディレクトリ...
-
コマンドプロンプトを指定のデ...
-
Subversionで、ファイルをリネ...
-
fopenでファイルが開かない場合...
-
PNG→JPGに変換・保存の方法
-
visualstudioでc#のdllができない
-
このアクセス解析の設置ができ...
-
Yahoo画像検索API時のキャッシ...
-
preg_match関数で正規表現の複...
-
環境変数をMakefile内で有効に...
-
絶対パス?絶対アドレス?意味...
-
mingwにパスを通せたのですが、...
-
findfirst("*",&ffblk,FA_DIREC...
-
現在位置より2つ上のディレク...
-
1段目、2段目…とは?
-
URLの中の~の記号の意味は?
-
/usr/local/lib/phpとはどうい...
-
PHPでディレクトリ名のみ表示す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
fopenでファイルが開かない場合...
-
visualstudioでc#のdllができない
-
Subversionのリポジトリの削除
-
絶対パス?絶対アドレス?意味...
-
makefile でファイルをコピーす...
-
ファイル選択ダイアログで選択...
-
rmdirでフォルダが消せません
-
ファイルアップロードに関して...
-
【PHP】declare命令で”Fatal er...
-
[ ディレクトリ '.' は書き込み...
-
aspのページが表示できません
-
VB.NET 最下位のディレクトリ名...
-
glob関数で日本語文字が取得で...
-
図に示す階層構造で,現在のデ...
-
includeが出来ない訳とは?
-
環境変数をMakefile内で有効に...
おすすめ情報