我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP编程语言的命名空间是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP编程语言的命名空间是什么

这篇文章主要介绍“PHP编程语言的命名空间是什么”,在日常操作中,相信很多人在PHP编程语言的命名空间是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP编程语言的命名空间是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。

PHP 命名空间可以解决以下两类问题:

用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

。。。。。。。。。。。。。。。

定义命名空间

默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。语法格式如下;

<?php  

// 定义代码在 'MyProject' 命名空间中  

namespace MyProject;  

 // ... 代码 ...  

?>

你也可以在同一个文件中定义不同的命名空间代码,如下所示:

<?php

namespace MyProject {

    const CONNECT_OK = 1;

    class Connection { }

    function connect() {   }

}

namespace AnotherProject {

    const CONNECT_OK = 1;

    class Connection { }

    function connect() {   }

}

?>

将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,如下所示:

<?php

namespace MyProject {

const CONNECT_OK = 1;

class Connection { }

function connect() {   }

}

namespace { // 全局代码

session_start();

$a = MyProject\connect();

echo MyProject\Connection::start();

}

?>

在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。

<?php

declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码

namespace MyProject {

const CONNECT_OK = 1;

class Connection { }

function connect() {   }

}

namespace { // 全局代码

session_start();

$a = MyProject\connect();

echo MyProject\Connection::start();

}

?>

。。。。。。。。。。。。

子命名空间

与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:

<?php

namespace MyProject\Sub\Level;  //声明分层次的单个命名空间

const CONNECT_OK = 1;

class Connection { }

function Connect() {   }

?>

上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。

。。。。。。。。。。。

命名空间使用

PHP 命名空间中的类名可以通过三种方式引用:

http://www.iis7.com/b/wzjk/

非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。

限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo。

完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。

注意:访问任意全局类、函数或常量,都可以使用完全限定名称

。。。。。。。。。。。。

命名空间和动态语言特征

PHP 命名空间的实现受到其语言自身的动态特征的影响。

必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。

。。。。。。。。。。。。

namespace关键字和__NAMESPACE__常量

PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAMESPACE__ 魔术常量和namespace关键字。

常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。

__NAMESPACE__ 示例, 在命名空间中的代码

关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。

namespace操作符,命名空间中的代码

。。。。。。。。。。。。

使用命名空间:别名/导入

PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。

在PHP中,别名是通过操作符 use 来实现的. 

。。。。。。。。。。。

使用命名空间:后备全局函数/常量

在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称

在命名空间中访问全局类对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。

命名空间中后备的全局函数/常量

。。。。。。。。。。。

全局空间

如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。

。。。。。。。。。。。

命名空间的顺序

自从有了命名空间之后,最容易出错的该是使用类的时候,这个类的寻找路径是什么样的了。

为了引用全局命名空间中的全局类,必须使用完全限定名称 new \C()。

到此,关于“PHP编程语言的命名空间是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP编程语言的命名空间是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP编程语言的命名空间是什么

这篇文章主要介绍“PHP编程语言的命名空间是什么”,在日常操作中,相信很多人在PHP编程语言的命名空间是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP编程语言的命名空间是什么”的疑惑有所帮助!接下来
2023-06-04

php命名空间的作用是什么

PHP命名空间组织代码,避免名称冲突,提高可读性和模块化开发。它允许将相关代码分组到逻辑单元中,通过可见性控制和嵌套命名空间提供结构和灵活性。通过使用名称空间别名和自动加载功能,开发人员可以简化命名空间引用并确保代码的有效加载。命名空间的最佳实践包括遵循一致的命名约定、适当地分组代码、谨慎使用别名以及利用自动加载机制。
php命名空间的作用是什么
2024-04-13

php命名空间的作用是什么

PHP命名空间的作用是避免命名冲突和提高代码的可读性。在PHP中,命名空间允许我们在代码中定义一个独特的标识符前缀,以避免与同样标识符的其他代码发生冲突。通过将相关的类、函数、常量等组织在命名空间中,我们可以区分不同的代码模块,提高代码的可
2023-10-12

php中的子命名空间是什么

这篇文章主要介绍“php中的子命名空间是什么”,在日常操作中,相信很多人在php中的子命名空间是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中的子命名空间是什么”的疑惑有所帮助!接下来,请跟着小编
2023-06-20

PHP的子命名空间是什么意思

本篇内容介绍了“PHP的子命名空间是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在PHP中,命名空间可以帮我们做成许多事情。可以让
2023-06-20

什么是PHP编程语言

这篇文章将为大家详细讲解有关什么是PHP编程语言,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP本身是一种简单而强大的语言。PHP语言拥有核心特性如强大的字符串和数组处理能力,同时极大的改进了对面向对
2023-06-17

php命名空间的调用顺序是什么

这篇文章主要讲解了“php命名空间的调用顺序是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php命名空间的调用顺序是什么”吧!1、完全限定函数、类和常量的调用将会在编译的时候解析。例如
2023-06-20

什么是VB.NET命名空间

这篇文章主要为大家展示了“什么是VB.NET命名空间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“什么是VB.NET命名空间”这篇文章吧。对于命名组织在程序集中定义的对象你有深入的了解吗?程序集
2023-06-17

C++命名空间的作用是什么

C++命名空间的作用是解决命名冲突的问题。在C++中,可以使用命名空间将一组相关的变量、函数、类等封装起来,从而避免与其他代码中的同名元素发生冲突。命名空间可以通过以下方式定义和使用:1. 定义命名空间:```namespace MyNam
2023-08-18

C#命名空间的作用是什么

当在C#中编写代码时,可以使用命名空间来将相关的类、接口和其他类型组织在一起。命名空间是一个逻辑上的容器,可用于避免命名冲突和提供更好的结构化代码组织。通过使用命名空间,可以将代码分为不同的逻辑单元,并对其进行命名以反映其功能或特定领域。
C#命名空间的作用是什么
2024-04-09

ADO.NET常用命名空间是什么

这期内容当中小编将会给大家带来有关ADO.NET常用命名空间是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。命名空间(NameSpace)记录了对象的名称与所在的路径。使用ADO.NET中的对象时,必
2023-06-17

java中arraylist命名空间是什么

Java中没有命名空间的概念,ArrayList是java.util包中的一个类。Java中没有命名空间的概念,但是可以使用包名来进行区分。例如,如果你想使用ArrayList类,可以通过导入java.util包来实现:```import
2023-05-31

php命名空间与自动加载的方法是什么

PHP命名空间管理代码组织,防止命名冲突。自动加载动态加载类,无需手动包含。PSR-4标准自动加载与命名空间文件路径匹配,实现可重用、一致的代码。利用命名空间和自动加载构建健壮、可维护的PHP应用程序。
php命名空间与自动加载的方法是什么
2024-04-11

c语言是什么编程语言

c语言作为一种通用、结构化的编程语言,自诞生以来广泛应用于计算机领域。其基本特性包括结构化编程、过程式编程、底层访问能力、高效性能和跨平台性。在编程语言中,c语言是系统级编程的基石,也是许多高级语言的基础。它在嵌入式系统开发、操作系统开发、
c语言是什么编程语言
2024-03-14

go语言是什么编程语言

go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go是一种过程编程语言,可用于快速机器代码编译;它提供了并发机制,可以轻松开发多核和联网的机器级程序;它提供对接口和类型嵌入的支持。
2023-05-14

php命名空间与自动加载的方法是什么

在PHP中,命名空间是一种将相关的类、函数和常量分组的机制,可以避免命名冲突。命名空间使用关键字`namespace`来定义,可以在文件的顶部或类的定义前使用。自动加载是一种机制,当使用尚未被定义的类时,可以自动加载对应的类文件。在PHP中
2023-10-12

c++中的命名空间是什么意思

命名空间是 c++ 中组织代码的机制,它允许开发人员使用相同的标识符避免名称冲突、组织相关的代码、提高代码可读性,以及重用代码。要使用命名空间,请使用 namespace 命名空间名称 { // 命名空间内的代码 },并使用命名空间名称::
c++中的命名空间是什么意思
2024-04-28

k8s创建命名空间的方法是什么

在Kubernetes中,可以使用kubectl命令行工具来创建命名空间。命令如下:kubectl create namespace 其中,是要创建的命名空间的名称。例如,要
k8s创建命名空间的方法是什么
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录