关于thinkPHP中的自动加载和手动导入
首先先讲自动加载:
前提:你的第三方类库要满足(1)符合命名规范和后缀的类库(2)使用命名空间,命名空间和路径一致的类库
(1)在ThinkPHP
目录下的library目录下的每一个子目录都是一个根命名空间
(2)凡是以这些子目录为根命名空间的类都可以自动加载
例如:Org/某某.class.php Think/某某.class.php 我们在项目中使用的时候
(a)直接 new \Org\某某.class.php既可以获得对象,或者
(b)use Org\某某; 实例化的时候直接new 某某();即可
如果你不想在Library下面创建,你想单独建一个文件夹存放第三方引入的类,你也可以自己注册一个根命名空间
在配置文件中配置: AUTOLOAD_NAMESPACE=>array(
'新的根命名空间名称'=>THINK_PATH.'新文件夹名称'
)
THINK_PATH就是你的ThinkPhp文件夹
这时候你可以把第三方类库放入刚刚新建的文件夹中,譬如:ThinkPhp/MyNamespace/Ceshi.class.php
对应的配置文件这样写:AUTOLOAD_NAMESPACE=>array( 'MyNamespace'=>THINK_PATH.'MyNamespace')
(1)记住:你的第三方类的命名空间要写上:namespace MyNamespace; 使用的时候new /MyNamespace/某某.class.php
(2)如果你觉得麻烦,不想在第三方类库里写命名空间可以这样:AUTOLOAD_NAMESPACE=>array( '某某'=>THINK_PATH.'MyNamespace/某某.class.php')直接指向第三方类
而不是文件夹,使用的时候:new \某某();即可
然而,注册的命名空间过多,自动加载效率会有所下降,这时候仅引入了类库映射的概念
在项目中这样写: \Think\Think::addMap('My',THINK_PATH.'MyNamespace\My.class.php');
$model=new \My();
$model->ceshi();
到此 可以总结一下自动加载的优先级: * 自动加载的优先级:(1)判断是否有注册类库映射,如果有自动加载类库映射定义的文件
* (2)判断Library目录下是否有该目录或文件,有则自动加载
* (3)判断是否有注册根命名空间
* (4)以上都没有在模块下找
手动加载就直接截图了:
你也可以参考手册:http://document.thinkphp.cn/manual_3_2.html#autoload
关于thinkPHP中的自动加载和手动导入的更多相关文章
- 在Thinkphp中【自动加载自定义扩展配置文件】!
/Conf/config.php为正式的扩展文件 /Conf/verify.php为扩展的自定义配置文件 /Conf/sendmail.php为扩展的自定义配置文件 如果要自动加载 verify和se ...
- autocad2008+C#2008开发中设置自动加载dll
一.复制编译后的dlll路径,比如我的是D:\zjy\cad开发\学习\宗地图\bin\Debug\zd.dll 二.随便找个地方新建一个记事本,在记事本中写入以下内容: (command " ...
- PHP中的自动加载
自动加载? 或许你已经对自动加载有所了解.简单描述一下:自动加载就是我们在new一个class的时候,不需要手动去写require来导入这个class.php文件,程序自动帮我们加载导入进来.这是 ...
- ZendFramework中实现自动加载models
最近自学Zendframework中,写Controller的时候总要require model下的类文件,然后才能实例化,感觉非常不爽 Google了许久,找到个明白人写的方法不错,主要就是修改ap ...
- thinkphp线上自动加载异常与修复
项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置, ...
- [PHP] 项目实践中的自动加载实现
1.使用spl_autoload_register函数注册一个自己定义的自动加载函数2.当在代码中new一个不存在的类的时候,上面的函数会被调用,不存在的类名会被作为参数传入该函数中3.兼容了两种方式 ...
- angularjs自动加载和手动加载
(一)自动加载 ng-app是angular的一个指令,代表一个angular应用(也叫模块).使用ng-app或ng-app=""来标记一个DOM结点,让框架会自动加载.也就是说 ...
- smarty、thinkphp中的html加载其他的html文件的方式
1.smarty 在模板文件中,使用定界符 {include file="header.html"} 不可以省略.html 2.thinkphp的html文件中 <incl ...
- thinkphp系列:类的自动加载是如何设计的
在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...
随机推荐
- 【IDEA】字体大小和类型
字体大小和类型 2020-09-08 09:06:21 by冲冲 1.工具界面的字体 2.代码的字体 注意:如果已经设置颜色主题,则还需要设置颜色主题的字体,才能生效.
- 『学了就忘』Linux文件系统管理 — 60、Linux中配置自动挂载
目录 1.自动挂载 2.如何查询系统下每个分区的UUID 3.配置自动挂载 4./etc/fstab文件修复 上一篇文章我们说明了手动分区讲解,对一块新硬盘进行了手动分区和挂载. 但是我们发现重启系统 ...
- Codeforces 923E - Perpetual Subtraction(微积分+生成函数+推式子+二项式反演+NTT)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 首先考虑最朴素的 \(dp\),设 \(dp_{z,i}\) 表示经 ...
- R语言与医学统计图形-【20】ggplot2图例
ggplot2绘图系统--图例:guide函数.标度函数.overrides.aes参数 图例调整函数guide_legend也属于标度函数,但不能单独作为对象使用,即不能如p+guide_legen ...
- Excel-统一小括号格式(中文小括号,英文小括号)
1.统一小括号格式(中文小括号,英文小括号) 公式=ASC("(") #"(" 解释函数: ASC(A1)#对于双字节字符集(DBCS)语言,将全角英文字符(即 ...
- 《Redis设计与实现》知识点目录
Redis设计与实现 第一部分 数据结构与对象 第二章 简单动态字符串 p8 简单动态字符串SDS 2.1 SDS的定义 p9 每个sds.h/sdshdr结构表示一个SDS值 2.2 SDS与C字符 ...
- SpringBoot整合Shiro 三:整合Mybatis
搭建环境见: SpringBoot整合Shiro 一:搭建环境 shiro配置类见: SpringBoot整合Shiro 二:Shiro配置类 整合Mybatis 添加Maven依赖 mysql.dr ...
- Idea中JSP页面中out内置对象报错out.println标红问题
问题如图: 解决方法: 导入jar包 1.在pom.xml的<dependencies>里面复制 <dependency> <groupId>javax.servl ...
- MapReduce08 数据清洗(ETL)和压缩
目录 数据清洗(ETL) ETL清洗案例 需求 需求分析 实现代码 编写WebLogMapper类 编写WebLogDriver类 打包到集群运行 压缩 概念 MR支持的压缩编码 压缩算法对比 压缩性 ...
- abuse
abuse 近/反义词: ill-treat, maltreat, mistreat, misuse, prostitute, spoil; defame, disparage, malign, re ...