Loader类的自动加载方法 Win环境下面严格区分大小写

This commit is contained in:
thinkphp
2013-04-10 22:19:19 +08:00
parent 29a97c50e3
commit 1a2a58a8ad
4 changed files with 12 additions and 8 deletions

View File

@@ -178,7 +178,7 @@ class App {
} }
// 获取模块名称 // 获取模块名称
define('MODULE_NAME',strtolower(isset($_GET[$var_m])?$_GET[$var_m]:$config['default_module'])); define('MODULE_NAME',ucwords(strtolower(isset($_GET[$var_m])?$_GET[$var_m]:$config['default_module'])));
// 模块初始化 // 模块初始化
if(MODULE_NAME && is_dir(APP_PATH.MODULE_NAME)) { if(MODULE_NAME && is_dir(APP_PATH.MODULE_NAME)) {

View File

@@ -35,8 +35,12 @@ class Loader {
} }
} }
$path = $find?dirname($path).'/':APP_PATH; $path = $find?dirname($path).'/':APP_PATH;
$filename = $path.str_replace('\\','/',$class).'.php'; $filename = $path.str_replace('\\','/',$class).EXT;
if(is_file($filename)) { if(is_file($filename)) {
// Win环境下面严格区分大小写
if (IS_WIN && !strstr(str_replace('/','\\',realpath($filename)),$class.EXT,true)){
return ;
}
include $filename; include $filename;
} }
} }
@@ -71,7 +75,7 @@ class Loader {
*/ */
static public function import($class, $baseUrl = '', $ext= EXT ) { static public function import($class, $baseUrl = '', $ext= EXT ) {
static $_file = []; static $_file = [];
$class = str_replace(array('.', '#'), array('/', '.'), $class); $class = str_replace(['.', '#'], ['/', '.'], $class);
if (isset($_file[$class . $baseUrl])) if (isset($_file[$class . $baseUrl]))
return true; return true;
else else
@@ -82,11 +86,11 @@ class Loader {
//加载当前项目应用类库 //加载当前项目应用类库
$class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1);
$baseUrl = MODULE_PATH; $baseUrl = MODULE_PATH;
}elseif (in_array(strtolower($class_strut[0]), array('org','com'))) { }elseif (in_array($class_strut[0], ['Org','Com'])) {
// org 第三方公共类库 com 企业公共类库 // org 第三方公共类库 com 企业公共类库
$baseUrl = LIB_PATH; $baseUrl = LIB_PATH;
}elseif('vendor' == strtolower($class_strut[0])){ }elseif(in_array($class_strut[0], ['Think','Vendor','Traits'])){
$baseUrl = VENDOR_PATH; $baseUrl = THINK_PATH;
}else { // 加载其他项目应用类库 }else { // 加载其他项目应用类库
$class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1);
$baseUrl = APP_PATH . $class_strut[0] .'/'; $baseUrl = APP_PATH . $class_strut[0] .'/';

View File

@@ -426,7 +426,7 @@ class Template {
protected function parseTagLib($tagLib,&$content,$hide=false) { protected function parseTagLib($tagLib,&$content,$hide=false) {
$begin = $this->config['taglib_begin']; $begin = $this->config['taglib_begin'];
$end = $this->config['taglib_end']; $end = $this->config['taglib_end'];
$className = '\\Think\\Template\\Taglib\\'.ucwords($tagLib); $className = '\\Think\\Template\\TagLib\\'.ucwords($tagLib);
$tLib = new $className; $tLib = new $className;
foreach ($tLib->getTags() as $name=>$val){ foreach ($tLib->getTags() as $name=>$val){
$tags = [$name]; $tags = [$name];

View File

@@ -9,7 +9,7 @@
// | Author: liu21st <liu21st@gmail.com> // | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace Think\Template\Taglib; namespace Think\Template\TagLib;
use Think\Template\TagLib; use Think\Template\TagLib;
/** /**
* CX标签库解析类 * CX标签库解析类