インクルードパスについて、少しだけ調べてみました。

パスの表記がメンドウな感じがしたので、include_path にクラスファイルのディレクトリを追加しようと思って少しだけ調べてみました。

[user@hoge class]$ pwd
/home/user/path_to/class
[user@hoge class]$ tree
.
|-- MySmarty.class.php
|-- ctrl
|   |-- HeyaCtrl.class.php
|   `-- PrefCtrl.class.php
|-- db
|   |-- Auth.php
|   |-- Td_pre_reg.php
|   |-- Tm_heya.php
|   |-- Tm_pref.php
|   `-- osumo.ini
`-- model
    `-- Heya.class.php

上記のようなファイル、ディレクトリ構成の場合、MySmarty.class.php に下記のように記述する事によってクラスまでのパスの表記を省略することができます。

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__)."/model");
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__)."/ctrl");

ポイントは PATH_SEPARATOR という区切り文字の定数を使う事で Linux でも Windows でも動くようになっている所だと思います。それから、 get_include_path() なんていうインクルードパスを知るのに便利な関数があったのですね。今までは phpinfo() を使って調べたりしていたので、勉強になりました。


そのような設定をしたことで、クラス名の指定だけでインクルードできるようになりました。

require_once "HeyaCtrl.class.php";
require_once "PrefCtrl.class.php";

$oHeyaCtrl = new HeyaCtrl();
$oPrefCtrl = new PrefCtrl();