您的位置:首页 > 编程语言 > PHP开发

关于thinkphp中——import中@表示的路径

2013-09-29 16:22 141 查看
thinkphp 

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('<br>'.$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/';
4000
} 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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 扩展 thinkphp 应用