libraryファイルの取得用に指定したパスを実際に読み込むパスに変換するメソッドを作成する。
PHPではrequire文やinclude文で外部のファイルを読み込むことができます。
aglibでは通常の絶対パス指定や実行上のディレクトリからの相対パス指定のほかに、基準ディレクトリからの相対パスの指定を可能にしました。
// パス種別
/** @const int パス種別:基準ディレクトリ相対 */
define('AG_PATH_NORMAL', 1);
/** @const int パス種別:相対ディレクトリ */
define('AG_PATH_RELATIVE', 2);
/** @const int パス種別:絶対ディレクトリ */
define('AG_PATH_ABSOLUTE', 3);
/**
* パス種別を取得する
* @param string パス
* @return int パス種別 AG_PATH_NORMAL:基準ディレクトリ相対/AG_PATH_RELATIVE: 相対ディレクトリ/AG_PATH_ABSOLUTE; 絶対ディレクトリ
*/
function pathType($path)
{
$s = DIRECTORY_SEPARATOR;
if ($path=='') return AG_PATH_NORMAL;
$patt = "/^\\.+$/";
$er = preg_match($patt, $path);
if ($er > 0) return AG_PATH_RELATIVE;
$patt = "/^\\.+\\" . $s . "/";
$er = preg_match($patt, $path);
if ($er > 0) return AG_PATH_RELATIVE;
if (substr($path, 0, 1) == $s) return AG_PATH_ABSOLUTE;
$patt = "/[A-Za-z]:\\" . $s . "/";
$er = preg_match($patt, $path);
if ($er > 0) return AG_PATH_ABSOLUTE;
return AG_PATH_NORMAL;
}
このメソッドはaglibのstaticメソッドです。$type = aglib::pathType("aglib")のように使います
/**
* ライブラリ用に実際のパスを取得する
* @param string 元のパス名
* @return string 実際のパス
*/
function getLibPath($path)
{
$basedir = aglib::basedir();
if ($path == '') return $basedir;
$type = aglib::pathType($path);
if ($type == AG_PATH_NORMAL){
$path = realpath($basedir . "/" . $path);
}
return $path;
このメソッドはaglibのstaticメソッドです。$fullpath = aglib::getLibPath("aglib")のように使います。
Copyright © 1997 - by A.G.Labo
(webmaster@aglabo.com) $Revision: 2 $