前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货来了!命名空间【thinkphp】

干货来了!命名空间【thinkphp】

作者头像
PM吃瓜
发布2019-08-13 10:47:15
5250
发布2019-08-13 10:47:15
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

//提示命名空间之前,不能有任何的其他语句

//一般的命名空间结构,跟php文件结构是存在映射关系的,通过命名空间名称,就能算出该类的实际存储位置,然后实例化的时候,会触发用设置的spl自动加载函数将文件引入。

# 为什么php中要使用namespace?

假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Student或者project2_school_class_Student。

引入namespace之后就可以将这个有效规避了,一个namespace就相当于对应一个文件路径,查找这个类的时候,就会去对应的文件路径查找类定义文件了。

//对于一个命名空间,只有类、接口、函数和常量会被包含在命名空间中。

// 在3.2版本中基本上不需要使用import方法,除非你没有使用命名空间定义。

##不过使用中需要注意的是,你的自定义的命名空间名称需要和你的文件夹名称相对应,不能更改。

#例子

比如说我在Application/Home 中新建一个文件夹叫Lib

Application/Home/Lib 我在这里加了一个类 Images.class

然后我想在Application/Home/controller/IndexController.class.php 中调用

Application/Home/Lib/Images.class 这个类应该如何调用呢

/// /////要看你的Images类是否使用了命名空间,如果类是Home\Lib\Images

那么就使用

$o = new\Home\Lib\Images;

如果你在前面有使用

use Home\Lib\Images

那么可以直接使用

$o= new Images;

#命名空间的使用

首先请务必严格遵守一下规则: 1.类文件都是以.class.php为后缀 2.类的命名空间地址和所在的路径地址一致 3.类名和文件名一致 我就是因为没有遵守以上规则,报出了几多莫名其妙的错误。 namespace的引用分两种情况: 1.在同一个namespace下 ********* IndexController.class.php <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index() { $Test = new Test(); $Test->sayHello(); } } *********************** Test.class.php namespace Home\Controller; class Test { public function sayHello() { echo 'namespace say hello control'; } } 2.在不同namespace下 <?php namespace Home\Extend; class TestSecond { public function sayHello() { echo 'namespace say hello second'; } } ************************* IndexController.php <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index() { $Test = new \Home\Extend\TestSecond(); $Test->sayHello(); /************ 如果使用 use Home\Extend\TestSecond ; 调用的时使用$Test= new TestSecond (); ***********/ } }

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档