Blogger Information
Blog 36
fans 0
comment 0
visits 28498
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间的声明与使用总结——2018年9月6日
Jackson
Original
722 people have browsed it

由于类、函数、常量的作用域是全局的,因此引入同名的类、函数、常量是不允许的,所以要通过命名空间来解决这个问题。在同一个脚本中建立不同的命名空间就可以创建同名的类、函数、常量。

  1. 命名空间的创建有两种方式

    使用关键字namespace 空间名;直接创建出命名空间。但这种方式创建不了全局空间。

    使用第二种大括号的方法则可以创建全局空间,案列如下:


    实例

    //声明一个命名空间one
    namespace{
        //全局空间
        const SITE = 'JJ';
    //    echo \two\SITE;
    //    echo \one\SITE;
    }
    namespace one{
    
        class Demo{public $name = 'jack';}
        const SITE = 'php';
        function add($a,$b){return $a+$b;}
    }
    
    namespace two{
        class Demo{public $name = 'jackson';}
        const SITE = 'baidu';
        function add($a,$b){return $a-$b;}
        echo (new \one\Demo())->name;
        echo '<br>',(new Demo())->name;
        echo '<br>', \SITE;
    }
    运行实例 »

    点击 "运行实例" 按钮查看在线实例

    2.使用use导入其他脚本的命名空间

    可以导入其他脚本的命名空间,但不能重名。使用别名可以避免一长串的前缀。use 。。。as。。。。

实例

namespace one ;
require 'demo5.php';

class Demo{public $name= 'jack';}
const SITE = 'css';
echo (new two\three\Demo())->name,'<br>';
echo \one\two\SITE;//使用完全限定名称 
//使用子空间同名类 起别名
use one\two\three\Demo as Demo1;

echo (new Demo1())->name,'<br>';//使用别名

namespace one\two\three;
class Demo{public $name = 'jackson';}
const SITE = 'php';

运行实例 »

点击 "运行实例" 按钮查看在线实例


3,非限定名称、限定名称、和完全限定名称之间区别与联系

非限定名称是没有前缀的,访问但是当前空间的变量。

限定名称则是有部分空间名称没有根空间名称,相当于相对路径,可以省略当前父空间的名称

完全限定名称则是完整的命名空间名称,类似绝对路径。



Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments