首先先讲自动加载:

前提:你的第三方类库要满足(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中的自动加载和手动导入的更多相关文章

  1. 在Thinkphp中【自动加载自定义扩展配置文件】!

    /Conf/config.php为正式的扩展文件 /Conf/verify.php为扩展的自定义配置文件 /Conf/sendmail.php为扩展的自定义配置文件 如果要自动加载 verify和se ...

  2. autocad2008+C#2008开发中设置自动加载dll

    一.复制编译后的dlll路径,比如我的是D:\zjy\cad开发\学习\宗地图\bin\Debug\zd.dll 二.随便找个地方新建一个记事本,在记事本中写入以下内容: (command " ...

  3. PHP中的自动加载

      自动加载? 或许你已经对自动加载有所了解.简单描述一下:自动加载就是我们在new一个class的时候,不需要手动去写require来导入这个class.php文件,程序自动帮我们加载导入进来.这是 ...

  4. ZendFramework中实现自动加载models

    最近自学Zendframework中,写Controller的时候总要require model下的类文件,然后才能实例化,感觉非常不爽 Google了许久,找到个明白人写的方法不错,主要就是修改ap ...

  5. thinkphp线上自动加载异常与修复

    项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置, ...

  6. [PHP] 项目实践中的自动加载实现

    1.使用spl_autoload_register函数注册一个自己定义的自动加载函数2.当在代码中new一个不存在的类的时候,上面的函数会被调用,不存在的类名会被作为参数传入该函数中3.兼容了两种方式 ...

  7. angularjs自动加载和手动加载

    (一)自动加载 ng-app是angular的一个指令,代表一个angular应用(也叫模块).使用ng-app或ng-app=""来标记一个DOM结点,让框架会自动加载.也就是说 ...

  8. smarty、thinkphp中的html加载其他的html文件的方式

    1.smarty 在模板文件中,使用定界符 {include file="header.html"}  不可以省略.html 2.thinkphp的html文件中 <incl ...

  9. thinkphp系列:类的自动加载是如何设计的

    在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...

随机推荐

  1. 从零搭建vsftpd

    先吐槽一下这个工具,配置繁琐,限制规则复杂,报错信息不够详细,学起来吃力. 准备工作 [root@vsftp-server ~]# mkdir /data/ #创建ftp目录 [root@vsftp- ...

  2. 在cmd中使用vim编译器

    下载地址:http://www.vim.org/download.php#pc 下载GVIM,配置下path环境变量就可以在cmd中使用vim了 把vim.exe复制一份,更名为vi.exe,就可以直 ...

  3. 第一章 初始C语言

    第一章 初始C语言 目录 第一章 初始C语言 1. C语言起源 2. 选择C语言的理由 2.1 设计特性 2.2 高效性 2.3 可移植性 2.4 强大而灵活 2.5 面向程序员 3. C语言的应用范 ...

  4. jpa生成uuid

    使用jpa可以生成uuid,但是我直接添加数据没有id值会报错,只在程序中有效,如果直接修改数据库需要手动填写,另外长度不要乱填 ,之前填了200,找了半天才找到原因. package com.jav ...

  5. idea创建 springboot工程(支持jsp)

    以前学springboot以前想搭建一个支持jsp的项目一直弄不上,现在发现用maven创建一个项目然后改成springboot效果一样的 https://blog.csdn.net/gisboygo ...

  6. 转-nRF5 SDK for Mesh(六) BLE MESH 的 基础概念

    nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile s ...

  7. Vue3项目搭建规范

    Vue3项目搭建规范 一. 代码规范 1.1 集成editorconfig配置 EditorConfig有助于为不同IDE编辑器上维护一致的编码风格 安装插件:EditorConfig for VS ...

  8. idea 启动debug的时候throw new ClassNotFoundException(name)

    idea 启动debug的时候throw new ClassNotFoundException(name) 启动debug就跳转到此界面 解决办法 这个方法只是忽略了抛异常的点,并没有真正解决问题.后 ...

  9. 日常Java 2021/10/31

    泛型类 泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分.和迈型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开.一个泛型参数,也被称为一个类型变量, ...

  10. 静态库动态库的编译、链接, binutils工具集, 代码段\数据段\bss段解释

    #1. 如何使用静态库 制作静态库 (1)gcc *.c -c -I../include得到o文件 (2) ar rcs libMyTest.a *.o 将所有.o文件打包为静态库,r将文件插入静态库 ...