美文网首页
命名空间是个坑~~~

命名空间是个坑~~~

作者: 许多多呀 | 来源:发表于2018-08-09 22:23 被阅读0次

题记:由于php语言是弱类型的语言所以定义起来很随意尤其是在类名上,由于类名可以跟文件名不同,所以不同的文件引入的可能是同一个命名方式的class所以就会爆炸!!!!!php没有包的概念

include就等于帮其他文件中的code全部粘贴过来,所以很坑爹。

php命名规范显得格外的重要,为了避免以上的惨剧发生,php提供了两个机制include_once /require_once(已经加载的文件内容不再加载),但如果确实有需要两个class重复(说的有点违心,作为程序员就算class重复,我也会把它改成不重复,重复的class太麻烦了,后期难免会出问题)

所谓命名空间就是namespace 空间名;例如下图1.0:我定义了空间名为foo现在我把10.php下图1.1引入进来,现在就来问题了同样的class Human 怎么区分呢,没关系,命名空间是这样解决的我想访问10.php中的内容就$lihua=new \Foo\Bar\Human; 我想访问当前文件下的Human 正常new就行,当然也可以$lihua=new \Foo \Human;这样搞

1.0 1.1

那么如何访问没有定义命名空间的class呢? 命名空间如果没有定义的话默认是根目录下的命名空间

也就是说我想要访问human的话 必须要$a=new\Human (在命名空间下new必须要这样)

但是这样写实在太丑了(为了安全我全部用完全限定名称,其他的不做说明),php提供了use关键词,phper new对象或者使用函数的时候可以把可以把命名空间写到前面但是一定要具体到class或者函数,否则报错,具体写法如下图2所示:

2

接下来世界重回正轨 又可以 $a =new Human();了 注意一次引入多个命名空间,需要考虑引入的命名空间是否有重复的class或者函数,否则又TMD尴尬了,如果有且一定要让他存在我还是建议你用$lihua=new \Foo \Human吧~~~~~~~~

相关文章

  • 命名空间是个坑~~~

    题记:由于php语言是弱类型的语言所以定义起来很随意尤其是在类名上,由于类名可以跟文件名不同,所以不同的文件引入的...

  • 命名空间 namespace

    /*命名空间:命名空间是一种封装事物的方法命名空间怎么声明?关键字: namespace 导入命名空间: use起...

  • namespace

    命名空间是一个域,这在个域中所有的类型名字必须是唯一的,不同的类型分组归入到层次化的命名空间. 命名空间的好处是:...

  • swift开发之扩展实现命名空间(实例方法,类方法)

    命名空间 对长期从事objective-c语言开发的我们来说,命名空间可能是一个比较陌生的名称。 “命名空间”,简...

  • 在Python中 作用域与命名空间的坑

    1. 命名空间 1.1 什么是命名空间 Namespace命名空间,也称名字空间,是从名字到对象的映射。Pytho...

  • chapter18_命名空间

    命令空间 每个命名空间都是一个作用域位于该命名空间之外的代码必须明确指出所用的名字属于哪个命名空间 命名空间可以是...

  • C 语言的命名空间

    C语言也有命名空间,可分位4类命名空间。 4类命名空间: 所有的标签(label)都属于同一个命名空间。说明:①在...

  • Hbase 查询语句

    进入HBase数据库 HBase帮助命令: 命名空间 列出所有命名空间 新建命名空间 删除命名空间 该命名空间必须...

  • NDK开发:C++基础

    一、命名空间 standard:标准命名空间 命名空间类似于java中的包。 自定义命名空间 使用命名空间 ::为...

  • 名称空间

    命名空间(英语:Namespace)是表示标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的...

网友评论

      本文标题:命名空间是个坑~~~

      本文链接:https://www.haomeiwen.com/subject/qtqhbftx.html