ThinkPHP import 使用及问题

今天用thinkphp写程序,发现import失效了,换成require使用绝对路径引入类库,发现没有问题,到处查看配置,路径问题,无解,疑惑万分,然后去看common/commom.php 中import源码,加上个var_dump($classfile)输出,看看到底路径对没对。

if (substr($baseUrl, -1) != '/')
        $baseUrl    .= '/';
    $classfile       = $baseUrl . $class . $ext;
    var_dump($classfile);
    if (!class_exists(basename($class),false)) {
        // 如果类不存在 则导入类库文件
        return require_cache($classfile);
    }

却发现没有任何输出结果,恍然大悟,竟然这个common.php也没有被加载,那运行的什么那个,然后看入口文件admin.php

毁三观的发现引入的ThinkPHP框架地址错误,竟然引入成上级目录测试用的Thinkphp 囧。
require '../ThinkPHP/ThinkPHP.php'; 就是多大了一个".",碰巧上机目录确实放了一个ThinkPHP,将错就错用上了,崩溃……

 

下面附上import的几个用法介绍

1、用法一

	import('@.Test.Translate');
	@,表示项目根目录。假定根目录是:App/
	导入类库的路径是:App/Lib/Test/Translate.class.php
	结论:import('@')是相对于项目目录的Lib目录而言

2、用法二

	import('Think.Test.Translate');
	Think,表示系统根目录。既是:./ThinkPHP/
	导入类库的路径是:./ThinkPHP/Lib/Test/Translate.class.php
	结论:import('Think')是相对于系统目录的Lib目录而言

3、用法三

	import('ORG.Test.Translate'); 
	或
	import('COM.Test.Translate'); 
	ORG, 第三方公共类库目录
	COM, 企业公共类库目录
	两种写法都是相对于./ThinkPHP/Extend/Library/ 而言。
	导入类库的路径是:./ThinkPHP/Extend/Library/ORG/Test/Translate.class.php
	或
	导入类库的路径是:./ThinkPHP/Extend/Library/COM/Test/Translate.class.php

	结论:import('ORG')或import('COM')是相对于系统扩展类库目录而言(./ThinkPHP/Extend/Library/)

4、用法四

	import('Blog.Test.Translate'); 
	这种写法既不是@,Think的写法,有不是ORG,COM的写法,会被当作分组的项目目录来处理。
	解析结果是:App/../Blog/Lib/Test/Translate.class.php
	结论:第四种写法,是相对于分组项目目录的Lib目录而言的写法。

5、用法五

import还支持别名导入,使用别名导入,首先先定义别名文件,在项目配置目录下建立alias.php,定义项目中需要用到的类库别名。

         return array(
              'page' =>  LIB_PATH.'Common/page.class.php',
         );

         //这样使用即可
         import('page');
posted @ 2013-04-25 15:43  msober  阅读(2748)  评论(0编辑  收藏  举报