ThinkPHP教程--16--命名空间

分析ThinkPHP5的源码(1) : 类的自动加载 Composer 下载的源码,每个框架它都必须都有一个“类的自动加载”机制 ,我们都知道PHP引入文件是需要 、 才能使用别的类文件中的方法。比如我需要写一个公共文件 model.php 但是!如何当公共类库文件很多的时候,每次都需要手动引入,就显得非常麻烦,不利于/不方便维护管理。 所以PHP引入了一个 的类自动加载,TP框架就是借助了 来完成类的自动加载。学习框架源码的第一步,先找到入口文件 ,然后一步步跟进流程,看下代码执行的过程。 打开Base.php ,第16行就会去加载 文件 (就是 阅读详情

3.2版本全面采用命名空间方式定义和加载类库文件,有效的解决多个模块之间的冲突问题,并且实现了更加高效的类库自动加载机制。

命名空间的概念必须了解,否则会成为3.2版本开发的重大障碍。
如果不清楚什么是命名空间,可以参考PHP手册:PHP命名空间

由于新版完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。 例如,Org\Util\File类的定义为:

 
  1. namespace Org\Util;
  2. class File {
  3. }

其所在的路径是 ThinkPHP/Library/Org/Util/File.class.php,因此,如果我们实例化该类的话:

 
  1. $class = new \Org\Util\File();

系统会自动加载 ThinkPHP/Library/Org/Util/File.class.php 文件。

注意:和3.1不同,我们无需在实例化命名空间定义的类之前导入类库文件了。

根命名空间

根命名空间是一个关键的概念,以上面的Org\Util\File类为例,Org就是一个根命名空间,其对应的初始命名空间目录就是系统的类库目录(ThinkPHP/Library),Library目录下面的子目录会自动识别为根命名空间,这些命名空间无需注册即可使用。

例如,我们在Library目录下面新增一个My根命名空间目录,然后定义一个Test类如下:

 
  1. namespace My;
  2. class Test {
  3. public function sayHello(){
  4. echo 'hello';
  5. }
  6. }

Test类保存在 ThinkPHP/Library/My/Test.class.php,我们就可以直接实例化和调用:

 
  1. $Test = new \My\Test();
  2. $Test->sayHello();

模块中的类库命名空间的根都是以模块名命名,例如:

 
  1. namespace Home\Model;
  2. class UserModel extends \Think\Model {
  3. }

其类文件位于 Application/Home/Model/UserModel.class.php。

 
  1. namespace Admin\Event;
  2. class UserEvent {
  3. }

其类文件位于 Application/Admin/Event/UserEvent.class.php。

3.2.1版本以上的话,允许设置对应用类库不使用命名空间,你在配置文件中进行如下设置:

 
  1. 'APP_USE_NAMESPACE' => false,

那么,所有的应用类库不再需要使用命名空间定义,但继承和调用核心类和系统类的时候,仍然需要使用命名空间,例如:

 
  1. class UserModel extends \Think\Model {
  2. }

特别注意:如果你需要在3.2版本中实例化PHP内置的类库或者第三方的没有使用命名空间定义的类,需要采用下面的方式:

  
  1. $class = new \stdClass();
  2. $sxml = new \SimpleXmlElement($xmlstr);
Phpword+thinkphp5 折腾了一天最终是用Composer来完成,因为直接官网下的https://github.com/PHPOffice/PHPWord中找不到common文件,会报找不到Text, 弄好之后直接访问控制器对应方法就可以下载下来,打开就会看到内容,更多内容正在完善中,尽情期待吧 用Composer下下来后安装下载phpword,会生成一个文件,如下图所示,打开vendor复制里面的phpoffice... 阅读详情

相关推荐

ThinkPHP 3.1.2 支持分布式 Memcache 缓存类库

ThinkPHP 3.1.2 官方只能支持一台Memcache缓存,不支持多台分布式Memcache缓存,现在简单改一下官方缓存类库(CacheMemcache.class.php)源代码就可以了。 亲测可用,放心使用,分享万岁!

ThinkPHP经典提示(如果提示系统不支持:XXX)

如果你在使用ThinkPHP,当你的模块出现以下提示时,则表明你的服务器不支持对应的扩展。 如:系统不支持:mysql 系统不支持:pgsql 系统不支持:mssql 系统不支持:memcache 系统不支持:zip 等等。 这表示你的服务器还没有安装mysql、memcache等扩展,你可以到你的php.ini中看看有没有启用对应的extension。 如有侵权 请及时反馈 ...

u012015632的博客 925

memcached启动错误解决

memcached自动启动的shell文件 博文链接:https://fengzhang.iteye.com/blog/205639

php memcache 不支持,PHP5.4.X与Memcache不兼容问题解决方案_PHP教程

今天把自己的环境安装了最新的PHP5.4.8,结果在与Memcache时出现了不兼容问题,结过反复调度总结了不兼容的原因与解决办法。emcache(sudo pecl install memcache)PHP扩展,编译后memcache.so在/usr/lib/php5/20090626/中,在PHP.ini添加好extension,重启phpfpm(不是重启nginx),出现下面的错误信息:代码...

weixin_33622032的博客 675

小波变换(Wavelet Transform)原理及介绍

小波变换是一种多分辨率时频分析工具,克服了傅里叶变换无法定位时间信息的缺陷。通过可伸缩平移的母小波,它能同时捕捉信号的高频细节(短时特征)和低频轮廓(整体趋势)。其核心原理是利用不同尺度的小波基与信号进行内积运算,生成时频域系数矩阵。小波变换具有动态分辨率特性,高频部分时间精度高,低频部分频率分辨率好。主要应用包括瞬态事件检测、信号降噪、数据压缩(如JPEG2000)和压缩感知(如快速MRI)。

qq_42758052的博客 5496

【ROS】usb_cam相机标定

1. 唠叨两句 当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。 以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源包几分钟就能完成相机标定,感激! 具体的内外参和畸变系数的说明,可以看看Reference里面的第一个链接,写得很详细。 2. 准备工作 要准备三样东西: usb_cam的ROS启动包 相机标定的ROS包 还有一个用于标定的棋盘格 1)usb_cam启动包

Will_Ye的博客 8211

Thinkphp 下安装与使用memcache,报错_NOT_SUPPORT_:memcached

按照网上的步骤安装完memcache后,打开thinkphp测试提示 _NOT_SUPPORT_:memcached 找了半天没找到原因,扩展文件的版本也对了,php.ini也改了,还是不行, 后来发现config.php中写的是 //memcached配置 ‘DATA_CACHE_TYPE’ => ‘Memcached’, ‘MEMCACHED_HOST’ => ‘127.0...

测试 898

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 301

thinkphp 安装memcache 以及测试(windows764位下)

memcache和memcached的区别(切记:版本号要和自己的环境对应) 在自己的新程序中打算全面应用memcached技术,这个很容易理解这是memcached是内存缓存,但是怎么还有memcache呢? 其实很简单,memcache是php的一个扩展,用于php管理memcached,php-memcache.dll。 如果安装了memcached不安装扩展,那么php无法操控mem

你YY个呸的 430

手机刷双系统

刷机教程(https://www.geekeyes.cn/forum.php/forum.php?mod=viewthread&tid=492) 解锁教程(http://www.gioov.com/index.php/1386)   解锁教程 cmd下 进入adb目录( 如果环境变量配置了adb 可以直接在cmd 下输入命令) 手机连接电脑,确保usb 调试打开,然后手机连接电脑,...

超宇的博客 1万+

YOLOv11的QAT(训练感知量化)实战

本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。

as1225120794的博客 510

ThinkPHP使用memcache缓存服务器

(1)Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件。 服务器装了memcached后想给更改成memecache方式 在Conf/config.php 中添加 'DATA_CACHE_TYPE'=>'Memcache', 'MEMCACHE_HOST'=>'tcp://127.0.0.1:11211...

diankui6178的博客 257

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 826

[php] [教程] 之ThinkPHP视频教程(PHP系列2015版)

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 ThinkPHP是一个

源码分享的博客 3220

在ros中进行多传感器融合定位

ROS 中的 robots_localization 包是一个非常有用的包,可以使用各种卡尔曼滤波器融合任意数量的传感器!我们将使用它将全局姿势数据(x、y、z 和orientation)与机器人上的现有传感器融合,以实现更强大的定位!

如果想成为中心,那么就到中心去吧。 3005

Python 爬虫实战:豆瓣 / IMDB 电影数据抓取(评分 + 剧情 + 演员阵容结构化处理)

在数据为王的时代,电影数据是进行市场分析、推荐系统构建和学术研究的重要资源。豆瓣和 IMDB 作为国内外最具影响力的电影评分和资讯网站,包含了海量高质量的电影数据。本文将带领你从零开始,构建一个健壮的 Python 爬虫,用于抓取豆瓣和 IMDB 的电影信息,并将其中的非结构化数据(如剧情简介、演员列表)进行清洗和结构化处理,最终存储到便于分析的结构化文件(如 CSV)中。

yansideyucsdn的博客 956

Web开发 | ThinkPHP 3.2.3 - 05.命名空间与多语言

1.前台注册完善   数据库中不能存储数组的信息,所以在上篇文章末尾的user_hobby是无法存入数据库中的。   可以使用implode()方法把数组元素用逗号合并起来,变成字符串。 程序代码如下: function register(){ $user = new \Model\UserModel(); //判断表单是否提交 ...

JasonSen 664

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

tp5中命名空间的应用

1.什么是命名空间? 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt可以同时在目录/home/greg和/home/other中存在,但在同一个目录中不能存在两个foo.txt文件。另外,在目录/home...

anare88484的专栏 257

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

thinkphp6 加载第三方类库_Thinkphp5实现加载第三方类库的方法

thinkphp5 很方便的加载我们自己的类库的。但是得严格按照他的规则来。强制我们使用命名空间。今天那么我精细的给大家讲讲该怎么加载。1.首先 我们按照默认的方式进行加载我们在他默认的拓展目录新建文件 如图所示这里我新建一个lib1目录 那么我们的测试类库是Test1.php该文件的代码如下...

weixin_39574708的博客 1551

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ThinkPHP5.0第一季:实战开发个人博客【正式版】-童攀-专题视频课程

本季度为thinkphp5第一季视频教程,以thinkphp5的新特性的讲解为重点,向大家详细介绍thinkphp5的知识点的应用.

tongpan0的博客 3025

Thinkphp框架初始及安装部署

一、框架概述 1、什么是框架 框架就是一些代码类、方法(函数)、变量、常量的集合,这些代码是功能结构性的代码(并非业务代码)。业务代码其实就是具体的一些模块的增删改查逻辑代码。 使用框架开发项目,有便于代码重用、开发效率高、代码规范好、便于功能扩展等优点。 2、php中的主流框架 ① Zend Framework 框架,PHP官方框架。 ② YII框架,又叫易框架。 ③ Symfony 框架。 ④ Laravel框架,市场使用较多。 ⑤ Codelgniter框架,简称CI框架。 ⑥ T

SunNang的博客 6682

thinkphp6和thinkphp5有什么区别

thinkphp中6和5有什么区别

qq_31315703的博客 2436

php商城项目开发视频_ThinkPHP框架开发大型商城项目实战视频教程下载

ThinkPHP框架开发大型商城项目实战视频教程下载教程介绍:ThinkPHP 为了简化企业级应用开发和敏捷WEB应用开发而诞生的一个免费开源的,快速、简单的面向对象的国产轻量级PHP开发框架。框架只是一个载体,php是其最底层的核心基础,想要学好ThinkPHP框架,就一定要学好PHP。此套ThinkPHP框架开发大型商城项目实战视频教程由传智播客录制,视频教程清晰易懂,学习起来还是很容易上手的...

weixin_39586526的博客 322

thinkphp5基础整理

1,如果定义了较多的命名空间,效率会有所下降,所以我们可以给常用的类库定义类库映射。命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效。 2,容器中已经调用过的类会自动使用单例,除非你使用下面的方式强制重新实例化。 3,容器的更多使用主要用于依赖注入,和5.0自动注入的方式有所区别,类的绑定操作不再使用Request对象而是直接注册到容器中,并且支持模型事件和数据库事件的依赖注入...

稳哥的小灶 302

thinkphp5中如何使用 usort

thinkphp5中如何使用 usort 一、总结 一句话总结:其实比较函数加上命名空间就好啦,不然找不到 比较函数加命名空间 数组做usort的第二个参数 usort($question_list, array('\app\index\model\blog\choose_question\base\UsortQuestionList',"cmp_sequence_score")...

weixin_30737433的博客 106

thinkphp 引入时间_一起学习Thinkphp(2.框架基础知识)

目录结构project 应用部署目录2.├─application 应用目录(可设置)3.│ ├─common 公共模块目录(可更改)4.│ ├─index 模块目录(可更改)5.│ │ ├─config.php 模块配置文件6.│ │ ├─common.php 模块函数文件7.│ │ ├─controller 控制器目录8.│ │ ├─model 模型目录9.│ │ ├─view 视图目录10....

weixin_42197129的博客 100
上一篇: ThinkPHP教程--15--CBD模式
下一篇: ThinkPHP教程--18--应用模块
路是自己的平凡的世界
博客等级 码龄13年 3粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值