返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php命名空间use关键字怎么用
  • 706
分享到

php命名空间use关键字怎么用

php命名空间use关键字 2015-12-20 13:12:54 706人浏览
摘要

在php中,use关键字可以用来导入命名空间,语法“use namespace;”;也可用来导入函数和常量,并为它们设置别名,语法“use 命名空间 as 别名;”。

教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

什么是命名空间?

从广义上来说,命名空间是一种封装事物的方法,在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。

命名空间的定义

php 中命名空间(namespace)是在 PHP5.3 中加入的,如果你了解过 c++ 的话,那命名空间就不算什么新事物了。不过命名空间在 PHP 当中还是相当重要的。

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

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

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

定义命名空间(使用关键字 namespace)

虽然任意合法的 PHP 代码都可以包含在命名空间中,但只有类(包括抽象类和 traits)、接口、函数和常量等类型的代码受命名空间的影响。

命名空间的定义需要通过关键字 namespace 来声明,语法格式如下:

namespace 命名空间名;

【示例】下面我们来演示一下如何定义了命名空间:

<?php
    namespace MyProject;    // 定义名为 MyProject 的命名空间。
    const CONNECT_OK = 1;
    class Myclass {
        
    }
    function Myfunc() {
        
    }
?>

在声明命名空间之前除了用于定义源文件编码方式的 declare 语句外,所有非 PHP 代码(包括空白符)都不能出现在命名空间声明之前。

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

PHP 允许通过别名引用或导入的方式来使用外部的命名空间,这是命名空间的一个重要特征。这有点类似于在类 unix 文件系统中可以创建对其它的文件或目录的符号连接。

使用 use 关键字可以实现命名空间的导入,从 PHP5.6 开始允许导入函数和常量,并为它们设置别名。语法格式如下:

use namespace;

在 PHP 中,别名是通过操作符 use 与 as 来实现的,语法格式如下:

use 命名空间 as 别名;

【示例】使用 use 操作符导入和使用别名。

<?php
    namespace foo;
    use My\Full\Classname as Another;
    // 下面的例子与 use My\Full\NSname as NSname 相同
    use My\Full\NSname;
    // 导入一个全局类
    use ArrayObject;
    // 导入一个函数
    use function My\Full\functionName;
    // 导入一个函数并定义别名
    use function My\Full\functionName as func;
    // 导入一个常量
    use const My\Full\CONSTANT;
    $obj = new namespace\Another;   // 实例化 foo\Another 对象
    $obj = new Another;             // 实例化 My\Full\Classname 对象
    NSname\subns\func();            // 调用 My\Full\NSname\subns\func 函数
    $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象
                                    // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象
    func();                         // 调用 My\Full\functionName 函数
    echo CONSTANT;                  // 打印 My\Full\CONSTANT 常量
?>

注意:对命名空间中的名称(包含命名空间分隔符的完全限定名称,如 Foo\Bar ,以及相对的不包含命名空间分隔符的全局名称,如 FooBar)来说,前导的反斜杠是不必要的也是不推荐的,因为导入的名称必须是完全限定的,不会根据当前的命名空间作相对解析。

为了简化操作,PHP 还支持在一行中导入多个命名空间,中间使用,隔开,示例代码如下:

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another;     // 实例化 My\Full\Classname 对象
    NSname\subns\func();    // 调用 My\Full\NSname\subns\func 函数
?>

导入操作是编译执行的,但动态的类名称、函数名称或常量名称则不是。

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化一个 My\Full\Classname 对象
    $a = 'Another';
    $obj = new $a;      // 实际化一个 Another 对象
?>

另外,导入操作只影响非限定名称和限定名称。完全限定名称由于是确定的,故不受导入的影响。

--结束END--

本文标题: php命名空间use关键字怎么用

本文链接: https://www.lsjlt.com/news/231.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • javascript、php关键字搜索函数怎么用
    这篇文章给大家分享的是有关javascript、php关键字搜索函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。javascript:a. 代码:/*@desc:js搜索函数,可用于关键字匹配@par ...
    740
    2023-03-24
    javascript php
  • php怎么实现关键字描红
    php实现关键字描红的方法:1、获取从文本框输入的关键字文字;2、连接数据库并进行查询;3、把查询到的结果循环显示出来;4、用str_ireplace函数将其中的关键字文字替换成带有红色的文字即可。 ...
    180
    2023-03-24
    PHP 关键字 描红
  • Python3之命名关键字参数
    def func(x,y,*,a,b):print(x)print(y)print(a)print(b)func(1,2,a=3,b=4)在*后面的参数都是命名关键字参数,传值的时候必须按照关键字参数进行传值 ...
    652
    2023-03-24
    关键字 参数
  • python命名关键字参数的作用详解
    在本篇文章里小编给大家整理了一篇关于python命名关键字参数的作用详解内容,有兴趣的朋友们可以学习参考下。 ...
    644
    2023-03-24
    python 关键字参数
  • Rust use关键字妙用及模块内容拆分方法
    这篇文章主要介绍了Rust use关键字妙用|模块内容拆分,文中还给大家介绍use关键字的习惯用法,快速引用自定义模块内容或标准库,以此优化代码书写,需要的朋友可以参考下 ...
    829
    2023-03-24
    Rust use关键字 Rust 模块内容拆分
  • 详解怎么用Java的super关键字
    今天带大家学习Java中super关键字是怎么用的,文中有非常详细的介绍,对正在学习的小伙伴们很有帮助,需要的朋友可以参考下 ...
    638
    2023-03-24
    Java的super关键字 java关键字
  • 哪个不是php的关键字
    string不是php的关键字,php的关键字有:1、abstract;2、and;3、array();4、as;5、break;6、callable;7、case;8、catch;9、class;10、clone等等。 ...
    401
    2023-03-24
    php
  • php关键字什么意思
    PHP关键字的意思是在语法中有特殊含义的字符;关键字是用来标识文件中各个记录的特定数据项目的值,PHP关键字表示已经被PHP语言本身使用,不能作为其他用途使用的字,例如Private、Protected、Public、static、Final、Abstract等等。本文操作环境:Windows10系统、PHP8.1版、Dell G3电脑php关键字什么意思所谓关键字就是已被语言本身使用, 不能作其它 ...
    767
    2023-03-24
    php
  • php怎么实现关键字搜索功能
    php实现关键字搜索功能的方法:1、创建数据库;2、获取输入的关键字;3、进行数据库连接;4、将书名中或者描述中包含关键字文字的记录查询出来,并把查询到的结果循环显示出来即可。 ...
    928
    2023-03-24
    PHP 关键字 搜索 描红
  • SQL中UNION关键字怎么用
    小编给大家分享一下SQL中UNION关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL中的UNION关键字,将实现将多个查询条件中的结果展示出来。U ...
    937
    2023-03-24
    sql union
  • Python nonlocal关键字 与 global 关键字解析
    这篇文章主要介绍了Python nonlocal关键字 与 global 关键字解析,nonlocal关键字用来在函数或其他作用域中使用外层变量,global关键字用来在函数或其他局部作用域中使用全局变量,更多香瓜内容需要的小伙伴可以参考一下 ...
    361
    2023-03-24
    Python nonlocal关键字 Python global 关键字
  • c语言中关键字Static怎么用
    这篇文章将为大家详细讲解有关c语言中关键字Static怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、可执行程序内存分配1. 可执行程序程序分段一个程序的3个基本段:text段,data段,bss ...
    340
    2023-03-24
    static c语言
  • MySQL怎么使用ESCAPE关键字
    这篇文章主要介绍了MySQL怎么使用ESCAPE关键字,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL转义转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字 ...
    856
    2023-03-24
    mysql escape
  • Mysql Explain 关键字
    -- 实际SQL,查找用户名为Jefabc的员工select * from emp where name = "Jefabc"; -- 查看SQL是否使用索引,前面加上explain即可explain select * from emp where nam ...
    514
    2023-03-24
    Mysql Explain 关键字
  • es6中怎么用关键字import声明变量
    小编给大家分享一下es6中怎么用关键字import声明变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用关键字import声明变量import用于加载文件,在大 ...
    321
    2023-03-24
    es6 import
  • es6中怎么用关键字function声明变量
    这篇文章主要介绍了es6中怎么用关键字function声明变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。用关键字function声明变量function add(a) { ...
    432
    2023-03-24
    es6 function
  • es6中怎么用关键字class声明变量
    小编给大家分享一下es6中怎么用关键字class声明变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用关键字class声明变量这里就简单说一下: 首先通过看ES ...
    277
    2023-03-24
    es6 class
  • es6中怎么用关键字const声明变量
    这篇文章主要为大家展示了“es6中怎么用关键字const声明变量”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“es6中怎么用关键字const声明变量”这篇文章吧。用关键字const声明变量con ...
    819
    2023-03-24
    es6 const
  • es6中怎么用关键字var声明变量
    这篇文章将为大家详细讲解有关es6中怎么用关键字var声明变量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用关键字var声明变量var a ;  //undefinedvar b = 1;var定义的变 ...
    925
    2023-03-24
    es6 var
  • java怎么继承,使用什么关键字?
    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。(推荐学习:java课程)通过extends关键字可 ...
    534
    2023-03-24
    java入门 java
热门问答
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作