关于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系列:类的自动加载是如何设计的
在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...
随机推荐
- 【linux系统】命令学习(一)ssh
ssh 1.在终端执行命令 ssh -p22 username@host 2.密码输入是看不到内容的 3.登入成功后默认进入的是home目录,就是根目录下的home目录 4.[root@VM-4-1 ...
- C# 从 UTF-8 流中读取字符串的正确方法
我们下面的代码是从一个流 stream 中读取 UTF-8 编码的字符串.我们可以先考虑一下其中存在的潜在问题. string ReadString(Stream stream) { var sb = ...
- [noi39]子图
小w喜欢的图可以发现就是一棵森林(是不是很神奇,其实易证:如果有环那么环本身就不合法,如果没有环那么显然合法).继续研究发现删边最小<=>选边最大<=>最大生成森林,krusk ...
- [loj3048]异或粽子
先对其求出前缀异或和,然后$o(k)$次枚举,每次选择最大值,考虑如何维护可以全局开一个堆,维护出每一个点的最大值的最大值,那么相当于要在一个点中删去一个点再找到最大值将这些删去的点重新建成一颗tri ...
- vue文件引入
<template> <div class="hello"> <h1>{{ msg }}</h1> <!-- <h1&g ...
- CF713C Sonya and Problem Wihtout a Legend
考虑我们直接选择一个暴力\(dp\). \(f_{i,j} = min_{k<=j}\ (f_{i - 1,k}) + |a_i - j|\) 我们考虑到我们直接维护在整个数域上\(min(f_ ...
- AT4168 [ARC100C] Or Plus Max
从\(whk\)回来了. 考虑我们需要维护一个子集的信息. 对于二进制的子集信息维护有一个很经典的操作: 高维前缀和. AT4168 [ARC100C] Or Plus Max // Problem: ...
- 洛谷 P5400 - [CTS2019]随机立方体(组合数学+二项式反演)
洛谷题面传送门 二项式反演好题. 首先看到"恰好 \(k\) 个极大值点",我们可以套路地想到二项式反演,具体来说我们记 \(f_i\) 为钦定 \(i\) 个点为极大值点的方案数 ...
- Codeforces 79D - Password(状压 dp+差分转化)
Codeforces 题目传送门 & 洛谷题目传送门 一个远古场的 *2800,在现在看来大概 *2600 左右罢( 不过我写这篇题解的原因大概是因为这题教会了我一个套路罢( 首先注意到每次翻 ...
- 洛谷 P6499 - [COCI2016-2017#2] Burza(状压 dp)
题面传送门 一道挺有意思的思维题(?) 首先我们假设根节点深度为 \(0\),那么 Daniel 的目标显然就是堵住一些节点使得 Stjepan 不能移动到深度为 \(k\) 的节点,Stjepan ...