ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解

简介: 一、ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。        公共类库公共类库通常是指ThinkPHP/Library目录下面的类库,例如:            Think目录:系统核心类库            Org目录:第三方公共类库        这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。



一、ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。
        
公共类库

公共类库通常是指ThinkPHP/Library目录下面的类库,例如:

            Think目录:系统核心类库
            Org目录:第三方公共类库

        这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。 你可以在Org/Util/目录下面添加一个Image.class.php 文件,然后添加命名空间如下:

            namespace Org\Util;
            class Image {
            }

        这样,就可以用下面的方式直接实例化Image类了:

            $image = new \Org\Util\Image;

        除了这些目录之外,你完全可以在ThinkPHP/Library目录下面添加自己的类库目录,例如,我们添加一个Com目录用于企业类库扩展:

        Com\Sina\App类(位于Com/Sina/App.class.php )

            namespace Com\Sina;
            class App {
            }

        Com\Sina\Rank类(位于Com/Sina/Rank.class.php)

            namespace Com\Sina;
            class Rank {
            }

        公共类库除了在系统的Library目录之外,还可以自定义其他的命名空间,我们只需要注册一个新的命名空间,在应用或者模块配置文件中添加下面的设置参数:

            'AUTOLOAD_NAMESPACE' => array(
            'Lib' => APP_PATH.'Lib',
            )

        我们在应用目录下面创建了一个Lib目录用于放置公共的Lib扩展,如果我们要把上面两个类库放到Lib\Sina目录下面,只需要调整为:

        Lib\Sina\App类(位于Lib/Sina/App.class.php )

            namespace Lib\Sina;
            class App {
            }

        Lib\Sina\Rank类(位于Lib/Sina/Rank.class.php)

            namespace Lib\Sina;
            class Rank {
            }

        如果你的类库没有采用命名空间的话,需要使用import方法先加载类库文件,然后再进行实例化,例如: 我们定义了一个Counter类(位于Com/Sina/Util/Counter.class.php):

            class Counter {
            }

        在使用的时候,需要按下面方式调用:

            import('Com.Sina.Util.Couter');
            $object = new \Counter();

        应用类库

        应用类库通常是在应用或者模块目录下面的类库,应用类库的命名空间一般就是模块的名称为根命名空间,例如: Home\Model\UserModel类(位于Application\Home\Model)

            namespace Home\Model;
            use Think\Model;
            class UserModel extends Model{
            }

        Common\Util\Pay类(位于Application\Common\Util)

            namespace Common\Util;
            class Pay {
            }

        Admin\Api\UserApi类(位于Application\Admin\Api)

            namespace Admin\Api;
            use Think\Model;
            class UserApi extends Model{
            }

            记住一个原则,命名空间的路径和实际的文件路径对应的话 就可以实现直接实例化的时候自动加载。

目录
相关文章
|
JSON 数据格式
Feign调用文件下载服务接口实例
Feign调用文件下载服务接口实例
1352 0
Feign调用文件下载服务接口实例
|
JSON 数据格式
Nestjs(三)接收参数 @Query @Body @Param(post、get 、put、delete ...)
Nestjs(三)接收参数 @Query @Body @Param(post、get 、put、delete ...)
709 4
Please use ‘App‘ component instead.报错问题解决
Please use ‘App‘ component instead.报错问题解决
816 0
|
Linux iOS开发 MacOS
brew - mac 下的 brew 切换为国内源
brew - mac 下的 brew 切换为国内源
4353 0
|
SQL 缓存 运维
MongoDB的性能问题之MongoDB 磁盘IO高问题
MongoDB的性能问题之MongoDB 磁盘IO高问题
|
前端开发 JavaScript 数据可视化
最棒的 7 个 Laravel admin 后台管理系统推荐
Laravel 已经凭借自己的易用性及低门槛成为 github 上 stars 第一的 PHP 框架,本文将介绍我精心为大家挑选出来的 Laravel admin 后台管理系统,从抽象程度最低(灵活但代码量大)到抽象程度最高(代码量小但不灵活)来帮助大家选择合适自己的 Laravel admin 后台管理系统。
3225 0
|
12月前
|
机器学习/深度学习 Ubuntu 数据挖掘
在Ubuntu系统安装Anaconda及Python
【7月更文挑战第10天】在Ubuntu上安装Anaconda及Python概述: 1. 访问官网下载适合的Anaconda版本。 2. 终端中运行`bash Anaconda3-xxxx.x-Linux-x86_64.sh`完成安装,需同意协议。 3. 通过`conda --version`验证安装。 4. 可选创建Python环境,如`conda create -n myenv python=3.8`。 5. 激活环境使用`conda activate myenv`。 6. 用`python --version`检查Python版本。
551 5
|
11月前
[PDF提取重命名]提取识别文字并对PDF文件批量重命名,提取PDF指定可复制的内容并批量重命名PDF,批量PDF文档指定识别提取区域
本文介绍一款实用工具,能快速从可复制内容的PDF中提取指定区域信息并据此重命名文件。设置提取坐标及导入PDF文档、设定新文件名后启动提取流程,即可高效批量处理。保存坐标设置以便重复使用,适用于需频繁修改大量PDF文件名的场景。
944 0
[PDF提取重命名]提取识别文字并对PDF文件批量重命名,提取PDF指定可复制的内容并批量重命名PDF,批量PDF文档指定识别提取区域
|
12月前
|
存储 数据可视化 大数据
从零到一建设数据中台 - 应用场景及实施路径
从零到一建设数据中台 - 应用场景及实施路径
424 0
|
9月前
|
缓存 PHP C语言
宝塔PHP8.1安装fileinfo拓展失败解决办法
在宝塔面板安装PHP8.1后,fileinfo扩展安装失败,手动尝试也报错。通过分析错误信息,在Makefile中修改CFLAGS添加`-std=c99`,并执行`make clean`清除缓存后,重新编译安装成功。最后在php.ini中启用fileinfo扩展并重启PHP服务。注意需调整CFLAGS为`-std=c99 -g`,去掉`-O2`。
765 0