1.根命名空间加载
在tp中有三个预定义的根命名空间
app应用类库 application
think系统核心类库thinkphp/library/think
traits系统Trait类库thinkphp/library/traits
//use的使用方法:
use think\Request
use think\Session
如果需要增加新的根命名空间,有两种方式:注册新的根命名空间或者放入EXTEND_PATH
目录(自动注册)
2.自动注册
需要把自己的类库包目录放入EXTEND_PATH
目录(默认为extend
,可配置),
就可以自动注册对应的命名空间。
通俗来讲是在extend目录下新建一个文件就这个文件夹名字当作一个根命名空间
栗子:
//类文件位于extend/my/Test.php
//命名空间是namespace my;
//直接new
$test = new \my\Test();
应用入口重新定义EXTEND_PATH常量
可以改变\my\Test
类文件的位置
define('EXTEND_PATH','../vendor/');
那么\my\Test
类文件的位置就变成了/vendor/my/File.php
。
注意不能定义含有预定义的三个根命名空间名字
3.手动注册
手动定义一个根命名空间比自动定义还要方便,更自由。
//单独注册
\think\Loader::addNamespace('命名空间','路径');
\think\Loader::addNamespace('my\test','../application/extend/my/test');
//批量注册
\think\Loader::addNamespace([
'命名空间1','路径1',
'命名空间2','路径2',
......
]);
4.类库映射
定义一个完整的命名空间的类名
//单独注册
loader::addClassMap('think\log',LIB_PATH,'think\log.php');
//批量注册
$map = [
'think\Log' => LIB_PATH.'think\Log.php',
'org\util\array'=> LIB_PATH.'org\util\Array.php'
];
Loader::addClassMap($map);
5.手动加载
手动加载自由度最大,
①可以有命名空间,遵循tp规范。
②可以有命名空间,不遵循tp规范。
③没有命名空间。
使用think\Loader
类的import
方法手动加载类库文件
loader('类库命名空间字符串','起始路径','文件拓展名')
栗子:
//加载当前模块应用类库
Loader::import('@.test.wechat#mail#class');//目录中斜杠用点替换,类中的点用井号代替
//加载其它模块的类库
\think\Loader::import('index.zx.zx',APP_PATH,'.class.php');
\think\Loader::import('index.zx.zx','../application','.class.php');
6.Composer下载
依赖类包名字和相关信息定义成json文件
加载类文件:配置和所需的类包进行关联,降低程序代码耦合度
代码的仓库:所有类库都是发布在他的平台
栗子:
//下载topthink作者的处理图片类
$img=\think\Image::open('static/img/in.jpg')->size();
//查看本地图片的尺寸
评论