thinkphp3.x中import方法导入类库的用法

  1. import方法是ThinkPHP框架用于类库导入的封装实现,尤其对于项目类库、扩展类库和第三方类库的导入支持,import方法早期的版本可以和java的import方法一样导入目录和通配符导入,后来考虑到性能问题,在后续的版本更新中不断改进和简化了,所以现在的用法比较简单明了。  
  2.   
  3. 调用格式:  
  4.   
  5.     import('类库名''起始路径''类库后缀')   
  6.   
  7. import方法有一个别名vendor方法,专门用于导入第三方类库,区别在于起始路径和类库后缀默认值不同。  
  8.   
  9. 我们来分析下具体的用法:   
  10.   
  11. 一、导入系统基类库  
  12.   
  13. 系统基类库其实就是指的Think类库包,所在目录就是指框架的核心Lib目录,import方法可以用于导入系统基类库,例如:   
  14.   
  15.     import('Think.Util.Array');  
  16.   
  17. 表示导入系统目录下面的Lib/Util/Array.class.php 类库文件,相当于我们这样使用   
  18.   
  19.     require THINK_PATH.'Lib/Util/Array.class.php';  
  20.   
  21. 也可以支持多级目录,例如:   
  22.   
  23.     import('Think.Util.U1.ClassA');  
  24.     import('Think.Util.U1.A2.ClassB');  
  25.   
  26. 通过import方法导入类库后,就可以进行类库的实例化操作了。   
  27.   
  28.   
  29. 二、导入扩展类库  
  30.   
  31. 扩展类库位于Extend/Library目录下面,这是系统的公共扩展类库目录,目前支持的扩展类库包只有ORG和Com包。   
  32.   
  33.     import('ORG.Util.Image');   
  34.     import('Com.Sina.OAuth');  
  35.   
  36. 会导入扩展目录下面的第三方类库(分别是Extend/Library/ORG/Util/Image.class.php和Extend/Library/Com/Sina/OAuth.class.php 类库文件),第三方类库包只能支持ORG和Com两种,下面的子目录可以随意添加。   
  37.   
  38. 三、导入项目应用类库  
  39.   
  40. 如果没有指定起始导入路径的话,类库包Think、ORG、Com之外的都会被认为是导入项目应用类库,例如:   
  41.   
  42.     import("MyApp.Action.UserAction");   
  43.     import("MyApp.Model.InfoModel");  
  44.   
  45. 表示导入MyApp项目的UserAction和InfoModel类库文件,由于通常,我们都是导入当前项目下面的类库,所以可以简写成:   
  46.   
  47.     import("@.Action.UserAction");   
  48.     import("@.Model.InfoModel");  
  49.   
  50. @符号表示导入当前项目下面的类库,这种方式也一定程度上方便了项目类库的代码移植,如果项目名称改变或者移动到其它项目下面的时候,写法不需要改变。   
  51.   
  52.   
  53. 四、导入非标准类库文件  
  54.   
  55. 这里所说的非标准类库文件,主要是指位于特殊位置或者非.class.php后缀的类库文件。像导入基类库、扩展类库和项目类库都是基于框架规范的目录下面,如果我们需要导入项目的Common目录下面的MyClass.php文件,则可以采用:   
  56.   
  57.     import('Common.MyClass',APP_PATH,'.php');  
  58.   
  59. 或者  
  60.   
  61.     import('MyClass',APP_PATH.'Common','.php');  
  62.   
  63. 或者要导入当前目录下面的RBAC类库   
  64.   
  65.     import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");  
  66.   
  67. 还有一种特殊情况,是类库命名的特殊性。按照系统的规则,import方法是无法导入具有点号的类库文件的,因为点号会直接转化成斜线,例如我们定义了一个名称为User.Info.class.php 的文件的话,采用:   
  68.   
  69.     import("ORG.User.Info");  
  70.   
  71. 方式加载的话就会出现错误,导致加载的文件不是ORG/User.Info.class.php 文件,而是ORG/User/Info.class.php 文件,这种情况下,  
  72.   
  73. 我们可以使用:   
  74.   
  75.     import("ORG.User#Info");  
  76.   
  77. 来导入。  
  78.   
  79.   
  80. 五、第三方类库导入  
  81.   
  82. ThinkPHP 的基类库都是以.class.php 为后缀的,这是系统内置的一个约定,当然也可以通过 import 的参数来控制, 为了更加方便引入其他框架和系统的类库, 系统还提供了一个import方法的别名vendor,专门用于导入第三方类库,并且默认的起始目录和类文件后缀有区别。  
  83.   
  84. 第三方类库位于系统扩展目录下的Vendor 目录, 例如,我们把 Zend 的 Filter\Dir.php 放到 Vendor 目录下面,这个时候 Dir 文件的路径就是 Vendor\Zend\Filter\Dir.php,我们使用vendor 方法导入只需要使用:   
  85.   
  86.     Vendor('Zend.Filter.Dir');  
  87.   
  88. 就可以导入Dir类库了。  
  89.   
  90. Vendor方法也可以支持和import方法一样的基础路径和文件名后缀参数,例如:   
  91.   
  92.     Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');  
  93.   
  94. 六、别名导入  
  95.   
  96. 除了命名空间的导入方式外,import方法还可以支持别名导入,要使用别名导入,首先要定义别名,我们可以在项目配置目录下面增加alias.php 用以定义项目中需要用到的类库别名,例如:   
  97.   
  98.     return array(       
  99.         'rbac' =>LIB_PATH.'Common/Rbac.class.php',       
  100.         'page' =>LIB_PATH.'Common/Page.class.php',   
  101.     );  
  102.   
  103. 那么,现在就可以直接使用:   
  104.   
  105.     import("rbac");   
  106.     import("page");  
  107.   
  108. 导入Rbac和Page类,别名导入方式禁止使用import方法的第二和第三个参数,别名导入方式的效率比命名空间导入方式要高效,缺点是需要预先定义相关别名。  
  109.   
  110. 可以为某些需要的类库定义别名,那么无需定义自动加载路径也可以快速的自动加载。  
  111.   
  112. 一般情况下,由于框架内部采用了自动加载方式,所以大多数情况下,不需要用户手动导入类库文件,通常用于导入扩展类库和第三方类库的情况居多。而且配合别名定义和自动加载路径的定义,也能减少用户手动导入类库的情况。  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值