zoukankan      html  css  js  c++  java
  • 关于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 某某();即可

     然而,注册的命名空间过多,自动加载效率会有所下降,这时候仅引入了类库映射的概念

     在项目中这样写: ThinkThink::addMap('My',THINK_PATH.'MyNamespaceMy.class.php');

             $model=new My();
                  $model->ceshi();

    到此  可以总结一下自动加载的优先级: * 自动加载的优先级:(1)判断是否有注册类库映射,如果有自动加载类库映射定义的文件
                     *                            (2)判断Library目录下是否有该目录或文件,有则自动加载
                     *                          (3)判断是否有注册根命名空间
                     *                          (4)以上都没有在模块下找                       

     手动加载就直接截图了:

     你也可以参考手册:http://document.thinkphp.cn/manual_3_2.html#autoload

  • 相关阅读:
    企业门户学习地址
    AX2009销售开票业务分析二
    AX2009销售开票业务分析一
    AX2009创建采购订单
    vs2008在工具箱中无法显示dynamics ax tools 解决办法
    使用tcp方式连接libvirtd
    ubuntu切换lightdm到kdm
    [转]服务器开发架构模式
    python实现简单消息总线
    自立,霸者的生存之道
  • 原文地址:https://www.cnblogs.com/wyqn/p/7435351.html
Copyright © 2011-2022 走看看