thinkphp——importで@が表すパスについて
2190 ワード
thinkphp
import デフォルトのパスはシステムのライブラリディレクトリthinkphp/libです.@はプロジェクトライブラリディレクトリapp/libを表します.
convention.php
'DEFAULT_APP' => '@', //デフォルトのプロジェクト名、@は現在のプロジェクトを表します
functions.php
import デフォルトのパスはシステムのライブラリディレクトリthinkphp/libです.@はプロジェクトライブラリディレクトリapp/libを表します.
convention.php
'DEFAULT_APP' => '@', //デフォルトのプロジェクト名、@は現在のプロジェクトを表します
functions.php
function import($class, $baseUrl = '', $ext='.class.php') {
static $_file = array();
static $_class = array();
$class = str_replace(array('.', '#'), array('/', '.'), $class); // “/” “.”, “.” “#”
if ('' === $baseUrl && false === strpos($class, '/')) {
//
return alias_import($class);
} //echo('
'.$class.$baseUrl);
if (isset($_file[$class . $baseUrl]))
return true;
else
$_file[$class . $baseUrl] = true;
$class_strut = explode("/", $class);
if (empty($baseUrl)) {
if ('@' == $class_strut[0] || APP_NAME == $class_strut[0]) {
//
$baseUrl = dirname(LIB_PATH); //LIB_PATH , App LIB_PATH “./App/Lib”
$class = substr_replace($class, 'Lib/', 0, strlen($class_strut[0]) + 1);
} elseif (in_array(strtolower($class_strut[0]), array('think', 'org', 'com'))) {
// ThinkPHP
// think org com
$baseUrl = THINK_PATH . '/Lib/';
} else {
//
$class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1);
$baseUrl = APP_PATH . '/../' . $class_strut[0] . '/' . LIB_DIR . '/';
}
}
if (substr($baseUrl, -1) != "/")
$baseUrl .= "/";
$classfile = $baseUrl . $class . $ext;
if ($ext == '.class.php' && is_file($classfile)) {
//
$class = basename($classfile, $ext);
if (isset($_class[$class]))
throw_exception(L('_CLASS_CONFLICT_') . ':' . $_class[$class] . ' ' . $classfile);
$_class[$class] = $classfile;
}
//
return require_cache($classfile);
}