`
lyz8jj0
  • 浏览: 20008 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

tp5 命名空间

阅读更多
命名空间
ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制。
特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \,例如:
// 错误的用法
$class = new stdClass();
$xml  =  new SimpleXmlElement($xmlstr);
// 正确的用法
$class = new \stdClass();
$xml  =  new \SimpleXmlElement($xmlstr);

在ThinkPHP5.0中,只需要给类库正确定义所在的命名空间,并且命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载,从而实现真正的惰性加载。

例如,\think\cache\driver\File类的定义为:

namespace think\cache\driver;

class File 
{
}


如果我们实例化该类的话,应该是:
$class = new \think\cache\driver\File();

系统会自动加载该类对应路径的类文件,其所在的路径是 thinkphp/library/think/cache/driver/File.php。
    5.0默认的目录规范是小写,类文件命名是驼峰法,并且首字母大写。
原则上,可以支持驼峰法命名的目录,只要命名空间定义和目录一致即可,例如:

我们实例化

$class = new \Think\Cache\Driver\File();

系统则会自动加载 thinkphp/library/Think/Cache/Driver/File.php文件。

自动注册

我们只需要把自己的类库包目录放入EXTEND_PATH目录(默认为extend,可配置),就可以自动注册对应的命名空间,例如:

我们在extend目录下面新增一个my目录,然后定义一个\my\Test类( 类文件位于extend/my/Test.php)如下:
namespace my;

class Test 
{
    public function sayHello()
    {
        echo 'hello';
    }
}


我们就可以直接实例化和调用:
$Test = new \my\Test();
$Test->sayHello();


分享到:
评论

相关推荐

    TP5 面向对象和命名空间

    **标题:“TP5 面向对象和命名空间”** 在PHP开发中,ThinkPHP5(简称TP5)是一个广泛使用的框架,它极大地简化了Web应用程序的开发过程。本篇文章将深入探讨TP5中的面向对象编程(OOP)概念以及命名空间的使用。 ...

    TP5开发手册

    - **命名空间**:解释了如何使用命名空间来组织代码,以及命名空间的作用。 - **自动加载**:介绍了如何配置自动加载规则以自动加载类文件。 - **Traits引入**:解释了如何使用Traits来复用非继承的代码片段。 - **...

    tp5框架完整版

    1. **命名空间(Namespace)**:TP5全面支持PHP的命名空间,使得类库组织更加清晰,避免了类名冲突的问题。 2. **依赖注入(Dependency Injection)**:通过依赖注入容器,实现对象的管理和依赖关系的解耦,提高代码...

    TP5 namespace 和 use 的用法

    当你需要在当前命名空间中使用其他命名空间的类时,可以使用`use` 来引入。例如: ```php use App\Http\Controllers\UserController; function foo() { $controller = new UserController(); // ... } ``` 在这...

    thinkphp_TP5_

    TP5通过Composer的自动加载机制实现类库的加载,`Loader`类负责自动加载规范化的命名空间和类文件,简化了类的引入过程。 10. **命令行工具**: TP5提供了`Command`类,用于构建命令行工具,通过`console`命令行...

    PHP tp5中使用原生sql查询代码实例

    注意事项: ... 2.只要是数据库操作必须引用 use/think/... * 2 使用DB 命名空间 * */ /****************tp5中使用原生语句*******************/ //query 用于查询 其他的用execute // 插入记录 // $result = Db::e

    tp5购物商场

    TP5.0引入了更多现代化的特性,如命名空间、依赖注入、中间件等,使得开发更加高效和灵活。 在"tp5购物商场"中,管理员模块是后台管理系统的核心,用于处理后台的各种操作,如商品上架、下架、编辑,用户管理,订单...

    TP5的PHPExcel包实现导入导出功能

    TP5提供了方便的命名空间机制,例如,要使用`PHPExcel_IOFactory`类,你可以这样引入: ```php use PhpOffice\PhpSpreadsheet\IOFactory; ``` 导入和导出Excel文件的基本步骤如下: 1. **导入**:创建一个新的PHP...

    tp5-api-master_termjtv_thinkphp5_tp_system-master_

    它引入了全新的命名空间、依赖注入、中间件等特性,提升了开发效率和代码质量。该框架强调简洁、灵活的设计理念,使得开发者能够快速构建高效、安全的应用程序。 二、MVC模式与ThinkPHP5 MVC模式是软件工程中的一...

    TP5分页类.rar

    需要注意的是,ThinkPHP 5使用了命名空间,因此在替换或修改分页类时,要确保匹配相应的命名空间,以避免加载错误。 3. **分页配置** TP5允许在控制器中设置分页参数,如每页显示条目数、URL参数等。例如: ```...

    tp5.1+swoole+redis实战直播平台 (学习版)-tp5live.zip

    1. 支持命名空间,符合PSR标准。 2. 强大的路由系统,允许灵活的URL映射和处理。 3. 快速的视图渲染和模板引擎。 4. 基于注解的自动路由和依赖注入,简化开发过程。 5. 提供了一套完整的命令行工具,便于进行任务...

    tp5开发手册

    7. 命名空间与自动加载:ThinkPHP使用命名空间和自动加载技术来组织代码,提高开发效率和代码的可读性。 8. Traits和引入:手册提到了PHP中的特性(Traits)以及如何在ThinkPHP项目中引入其他资源文件。 9. 路由:...

    tp5 实现极光推送

    把该文件放入tp5中,修改对应的命名空间,加载方法就可以推送,极光后台要添加有设备才可以收到

    TP5完全开发手册

    手册介绍了ThinkPHP的基础架构,包括生命周期、入口文件设计、模块设计以及命名空间的使用。这些知识点是理解ThinkPHP框架工作原理的基础。例如,ThinkPHP的生命周期从入口文件开始,历经初始化、路由分发、请求处理...

    开源CRM管理系统-TP5+Bootstrap

    TP5引入了更多的现代PHP特性,如命名空间、依赖注入、自动加载等,降低了代码耦合度,提升了代码可读性和可维护性。同时,TP5提供了丰富的内置操作类,如数据库操作、缓存管理、日志记录等,极大地简化了开发工作。 ...

    完美解决在ThinkPHP控制器中命名空间的问题

    在使用ThinkPHP框架开发Web应用时,经常会遇到命名空间相关的问题。命名空间在PHP中是一种封装事物的方法,用来避免类、函数或常量的名称发生冲突。ThinkPHP框架在引入了命名空间之后,为项目管理和模块划分带来了极...

    tp3集成Workerman

    它的自动加载机制通常是基于命名空间和类名的,所以需要适配Workerman的加载规则。 2. **Workerman介绍**:Workerman是基于事件驱动的多进程服务器,支持异步非阻塞I/O,可以充分利用多核CPU资源,提高系统的并发...

    tp5第二季完整资源包.zip

    1. **基础概念**:了解ThinkPHP5的基本架构,包括MVC模式、命名空间、依赖注入等核心概念,这是深入学习和使用框架的基础。 2. **控制器(Controller)**:学习如何编写控制器,它是业务逻辑与视图层之间的桥梁,负责...

    eSDK_TP_WSDL_V1.5.01

    5. **命名空间**:为了确保元素和属性的唯一性,WSDL文件会使用命名空间。开发者需要熟悉这些命名空间,以便在编码时正确引用。 6. **协议和绑定**:eSDK_TP_WSDL_V1.5.01可能会指定HTTP或HTTPS作为传输协议,因为...

    TP5笔记1

    14. **日期插件**:如My97 DatePicker,可能与ThinkPHP5的模板标签有冲突,解决方法是调整插件的命名空间或模板标签的写法,以避免冲突。 以上是"TP5笔记1"中涉及到的主要技术点,这些知识对于理解和使用ThinkPHP5...

Global site tag (gtag.js) - Google Analytics