一、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{
            }

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

ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解的更多相关文章

  1. thinkPHP 类库映射 类库导入

    遵循我们上面的命名空间定义规范的话,基本上可以完成类库的自动加载了,但是如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射.命名类库映射相当于给类文件定义了一个别名, ...

  2. C#-概念-类库:类库

    ylbtech-C#-概念-类库:类库 1.返回顶部 1. 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务 ...

  3. ThinkPHP第十二天(Import导入第三方类库方法,独立分组文件夹结构)

    1.Import(路径+类名,基础路径): 平时导入类时有三种基础路径:Think:import('Think.core.Action');Think表示ThinkPHP/Lib基础路径,完整路径为T ...

  4. thinkphp学习简易教程(二) thinkphp连接读取MySQL数据库

    首先, 在本地服务器中新建项目APP,依据第一讲中的步骤配置好thinkphp,这里为了测试方便,不分前台和后台模块,统一把模块路径设为'./APP/'. 1.新建数据库myapp,以及数据库表thi ...

  5. thinkphp学习简易教程(一) thinkphp创建项目

    1.在本地服务器根目录下创建项目目录,如命名为app: 2.把thinkphp的压缩包解压到与项目同级目录下,如app是放在目录APP下面,即项目目录路径为'APP/app/',则thinkphp应解 ...

  6. Android类库常用类库一览

    在Android SDK中包括很多包文件,通过了解这些包的功能也有助于了解可以开发的功能. 在Android类库中,各种包写成android.*的方式,重要包的描述如下所示: android.app ...

  7. ThinkPHP学习笔记(一)----初识ThinkPHP

    在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...

  8. thinkphp中的类库与引用import引入机制

    ThinkPHP的类库包括基类库和应用类库 控制器类 模块名+Action 例如 UserAction.InfoAction 模型类 模型名+Model 例如 UserModel.InfoModel ...

  9. ThinkPHP vendor 方法导入第三方类库

    ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展 ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项 ...

随机推荐

  1. Java的Spring内实现的mini版内存"计数器"功能

    工期紧急,不让用Redis,自己实现了一个Spring内的mini版内存"计数器"功能,很简陋,和业务耦合太紧密,需要改进. public Long getCreationCoun ...

  2. GIL全局解释器锁+GIL全局解释器锁vs互斥锁+定时器+线程queue+进程池与线程池(同步与异步)

    以多线程为例写个互斥锁 from threading import Thread ,Lockimport timemutex = Lock() n = 100 def task(): global n ...

  3. matplotlib绘图

    fig = plt.figure() ax=plt.gca() timeList = np.array(timeList) timeList=timeList*100 timeList1 = np.a ...

  4. notepad编写html

    notepad写代码的过程: 1.打开notepad,新建一个文档,然后保存,文件的后缀名为.html,代码保存前界面上文件名称为红色,保存后蓝色: 2.保存为html后,进行代码的输入,如果设置好自 ...

  5. 如何在Anaconda中实现多版本python共存

    anaconda中Python版本是3.5,因为爬虫原因,需要Python2.7版本,因此,希望能在anaconda中Python3和Python2共存. 1. 打开Anaconda Prompt,可 ...

  6. 工作中经常用到github上优秀、实用、轻量级、无依赖的插件和库

    原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博客,记录点滴. 按照格式推荐 ...

  7. jenkins--svn+Email自动触发2(jenkins系统配置)

    jenkins系统配置-SonarQube servers配置: 邮件通知设置: 邮件调试问题: 在 系统设置 --> Extended E-mail Notification: 找到 Enab ...

  8. BZOJ4538 HNOI2016网络(树链剖分+线段树+堆/整体二分+树上差分)

    某两个点间的请求只对不在这条路径上的询问有影响.那么容易想到每次修改除该路径上的所有点的答案.对每个点建个两个堆,其中一个用来删除,线段树维护即可.由于一条路径在树剖后的dfs序中是log个区间,所以 ...

  9. So you want to be a 2n-aire? UVA - 10900(概率)

    题意: 初始值为1, 每次回答一个问题,如果答对初始值乘2,答错归0,结束,一共有n个问题,求在最优的策略下,最后值的期望值 解析: 注意题中的一句话  每个问题的答对概率在t和1之间均匀分布  也就 ...

  10. (转)poj算法做题顺序

    初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ...