Home > Backend Development > PHP Tutorial > php—namespace keyword and __NAMESPACE__ constant

php—namespace keyword and __NAMESPACE__ constant

伊谢尔伦
Release: 2016-11-23 10:54:17
Original
1021 people have browsed it

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

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

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

<?php
    namespace MyProject;
    echo &#39;"&#39;, __NAMESPACE__, &#39;"&#39;; // 输出 "MyProject"
?>
Copy after login

Example #2 __NAMESPACE__ 示例,全局代码

<?php
    echo &#39;"&#39;, __NAMESPACE__, &#39;"&#39;; // 输出 ""
?>
Copy after login

常量 __NAMESPACE__ 在动态创建名称时很有用,例如:

Example #3 使用__NAMESPACE__动态创建名称

<?php
    namespace MyProject;
    function get($classname)
    {
        $a = __NAMESPACE__ . &#39;\\&#39; . $classname;
        return new $a;
    }
?>
Copy after login

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

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

<?php
    namespace MyProject;
    use blah\blah as mine; //命名空间别名(参考:使用命名空间别名和导入)
    blah\mine(); // 调用函数 blah\blah\mine()
    namespace\blah\mine(); // 调用函数 MyProject\blah\mine()
    namespace\func(); // 调用函数 MyProject\func()
    namespace\sub\func(); // 调用函数 MyProject\sub\func()
    namespace\cname::method(); // 调用类 MyProject\cname 的静态方法"method" 
    $a = new namespace\sub\cname(); // 实例化类MyProject\sub\cname的对象 
    $b = namespace\CONSTANT; // 将常量 MyProject\CONSTANT 的值赋给 $b
?>
Copy after login

Example #5 namespace操作符, 全局代码

<?php
 namespace\func(); // 调用函数 func()
   namespace\sub\func(); // 调用函数 sub\func()
   namespace\cname::method(); // 调用类cname的静态方法"method"
   $a = new namespace\sub\cname(); // 实例化sub\cname类对象
   $b = namespace\CONSTANT; // 将常量 CONSTANT 的值赋给 $b
?>
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template