●phpモジュール化やってみました。(第3回:phpスクリプトの相対パス化)
ふぅ、この内容もようやく3回目です。
と言っても、自分がしたカスタマイズの内容を自分で覚えれないので、メモに使っているだけですが。(^^;
まぁ、同じようにつまずいた人には有益かも知れないので、きっちりと書いておきます。
では、<?php readfile("moji.html"); ?>の相対パス化の話です。
まずは、phpスクリプトはおいておいて、相対パスと絶対パスについてです。
1.相対パスと絶対パスとは?
(知っている方も多いと思いますので、その場合はこの部分を飛ばして下さいな。)
例として、俺のblogトップとカテゴリートップのアドレスを紹介します。
下記アドレスが、それぞれの絶対パスになります。
(絶対パスは、必ずしもWEB上からのアクセスのことでは無いので、あしからず。)
blogトップ:http://neta20000.net/index.php
カテゴリートップ:http://neta20000.net/archives/cat_5.php
1階層目 /2階層目
今度は相対パスを示します。相対パスは基準ファイルから考えるので、位置関係(階層)によって違います。
1階層目にあるindex.phpから見た、cat_5.phpの相対パスは下記です。
./archives/cat_5.php
『./』は、基準ファイル(index.php)の場所と同じ階層(1階層目)を示します。
逆に2階層目にあるcat_5.phpから見た、index.phpの相対パスは下記になります。
../cat_5.php
『../』は、基準ファイル(cat_5.php)の場所(2階層目)より一つ上の階層(1階層目)を示します。
もっと深い階層から数階層上を目指す場合には、『../../../../』なんて場合も有りますね。
あんまり分かりやすい説明では無いですが、相対パスと絶対パスの概念はこんな感じになっています。
まぁ、ネットで探せばもっと分かりやすい説明があると思うので、困ったらそっちを見た方が無難かも知れませんが。(ぇ
なお相対パスが分からない場合は、絶対パスで指定した方が確実です。
2.phpスクリプトの相対パス化
さて、俺はなんでこんなややこしいことを考えているのでしょうか。
いやね、php用モジュールファイルを毎回WEB上(http://)からアクセスするのは、負荷が掛かりそうな気がしませんか?
少なくとも、相対パスに比べて負荷が掛かるのではないかと、俺は勝手に思っています。
そういうわけで、当blogはphpスクリプトの呼び出し先を、全て相対パスで行っています。
(もし相対パスとWEB上からのアクセスが同じ負荷ならば、俺の苦労は粗大ゴミでぽいっです。)
では、phpスクリプトの参照先を相対パスにする流れを説明します。
第2回の内容(参考記事含む)や相対パスを理解できていれば、そんなに難しくありません。
あくまで、基準ファイルと参照ファイルの位置関係(階層関係)が分かれば良いだけですから。
ではまた、例を挙げつつ説明していきますね。
当blogでは、テンプレート(インデックス)内のメインページに、index.phpを作っています。
同じテンプレート(インデックス)内に、phpスクリプトから呼び込む参照ファイル(○○.html)も作っています。
例えば、読み込んでくる参照ファイルをo-masiro.htmlとしましょう。
この場合、index.phpとo-masiro.htmlはテンプレート(インデックス)内に存在するので、同じ階層です。
(無理に設定を変更していないかぎりは、同じ階層になっているハズです。詳しくはFTPで繋いで見て下さい。)
肝心のindex.phpのソースは下記になります。
<html>
<body>
<?php readfile("./o-masiro.html"); ?>
</body>
</html>
まったくもって見る必要ありませんが、o-masiro.htmlのソースは下記です。(^^;
大宮ましろ:Rainy Blue~6月の雨~(エロゲー)の攻略ヒロインで、○学生!
『ましろの宝箱』では、「来年から○学校に通えます」とあるが、いったい何歳だ?(笑
そういうわけで、index.phpから見たテンプレート(インデックス)内にあるファイルの相対パスは、『./ファイル名』です。
ですが、テンプレート(アーカイブ)となると話は別です。
例えば、エントリーアーカイブ・カテゴリーアーカイブ・日付アーカイブでは相対パスがそれぞれ違います。
phpモジュール化(第2回)のやり方を利用した場合は、各種アーカイブの位置関係(絶対パス)は下記になっているハズです。
エントリー:http://neta20000.net/archives/年/月/日/何時何分何秒.php
日別:http://neta20000.net/archives/年/月/日/index.php
カテゴリー:http://neta20000.net/archives/cat_数字.php
各phpスクリプトから読み込む参照ファイルは、index.phpと同じ場所に作りました。
となると、各テンプレート(アーカイブ)から見た、参照ファイル(o-masiro.html)の相対パスは下記になります。
エントリー:../../../../o-masiro.html
日別:../../../../o-masiro.html
カテゴリー:../../o-masiro.html
あとは、各テンプレート(アーカイブ)に<?php readfile("相対パス"); ?>を指定し、保存と再構成をすれば完成です。
どうでしょうか、うまく行きましたか?
多分、何かしらのエラーが出てくると思います。(マテ
すくなくとも、俺はエラーが出てきました。・・・かなり困った。(^^;
また、ここまでの作業だけでは再構築時の高速化はあまり意味がありません。
モジュール化によってカスタマイズを楽にしただけですからね。
phpモジュール化の一番の利点は、再構築の有無を有る程度制御できることですから。
これを考えないと、phpモジュール化の意味がかなり減ってしまいます。
そんなわけで、次回ではモジュール化による再構築時の高速化と、このようなphp化でよく見るエラーを紹介します。
| 第1回:概念 |
| 第2回:変更の仕方 |
| 第3回:phpスクリプトの相対パス化 |
| 第4回:phpモジュール化の際のエラーと再構築高速化 |


