namespace

PHP命名空间用于解决代码冲突问题,提供类、函数和常量的分组。它包括全局空间、多层及多命名空间定义,通过`use`关键字进行导入和别名设置。解析顺序优先考虑当前命名空间,再查找全局空间。常量在当前命名空间中使用,可显式访问。
摘要由CSDN通过智能技术生成

PHP命名空间

一种封装事物的方法,原理类似于操作系统中使用目录来对文件分组

解决问题

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

定义

<?php
namespace  MyProject ;  // 所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前(declare 语句除外)

// 只有类,函数,常量的代码受命名空间的影响
const  CONNECT_OK  =  1 ;
class  Connection  {  /* ... */  }
function  connect () {  /* ... */   }

全局空间

如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。

在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。

多层命名空间

<?php
 namespace  MyProject \ Sub \ Level ; // 定义的分层次的命名空间,对应相应的目录结构

const  CONNECT_OK  =  1 ;
class  Connection  {  /* ... */  }
function  connect () {  /* ... */   }

多命名空间

在实际的编程实践中,将多个 PHP 脚本合并在同一个文件中(非常不提倡在同一个文件中定义多个命名空间)

<?php
namespace  MyProject  {

const  CONNECT_OK  =  1 ;
class  Connection  {  /* ... */  }
function  connect () {  /* ... */   }
}

// 使用两个大括号分隔
namespace  AnotherProject  { 

const  CONNECT_OK  =  1 ;
class  Connection  {  /* ... */  }
function  connect () {  /* ... */   }
}

// 如果不指定命
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值