18-3命名空间的声明与全局空间访问–PHP实战开发教程

18-3命名空间的声明与全局空间访问–PHP实战开发教程

磺敖尖柿蛋馁稻弘俗确戊朽秒


 命名空间的声明与使用
 1.使用关键字:namespace
 2.php5.3+
 3.namespace 之前不能有除了declare和注释之外的任何代码,html也不行
 4.命名空间默认从全局开始定位,全局空间用\表示,类似于根目录
 5.如果当前脚本声明了命名空间,则所有成员的访问,就必须使用命名空间,包括系统函数


新建demo3.php

<?php
class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";

class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";

执行:

18-3命名空间的声明与全局空间访问–PHP实战开发教程第1张


使用命名空间

<?php
//1. 声明一个命名空间
namespace one;
class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";

//如果我想声明同名的类,常量与函数可以再声明一个命名空间

//2.一个脚本中允许有多个命名空间
//声明命名空间:two,使用\tow\进行引用
namespace two;
class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";

执行,不报错

18-3命名空间的声明与全局空间访问–PHP实战开发教程第2张


在命名空间自定义var_dump()

<?php
//1. 声明命名空间one
namespace one;
class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";
//2.声明命名空间two
namespace two;
class Demo
{
    public $name="mengmianren";
}
function add($a,$b)
{
    return $a+$b;
}
const SITE="萌面人资料铺";

//查看当前的命名空间
echo "当前的命名空间是:".__NAMESPACE__."<br>";
//声明var_dump()函数  因为在命名空间two中  所以不会与系统的var_dump()函数冲突
function var_dump($name)
{
    return "我是命名空间two中的函数var_dump(),我的名字是:".$name;
}
echo var_dump('mengmianren');

//此时,如果要调用全局的var_dump()需要加\
echo "<br>";
\var_dump(new Demo());
echo "<br>";
\var_dump([1,2,3,4,5,6]);

执行:

18-3命名空间的声明与全局空间访问–PHP实战开发教程第3张


不建议在一个脚本中声明多个命名空间,如果一定要声明多个命名空间,建议这样写:

<?php
//1. 声明命名空间one
namespace one
{
    class Demo
    {
        public $name="mengmianren";
    }
    function add($a,$b)
    {
        return $a+$b;
    }
    const SITE="萌面人资料铺";
}

//2.声明命名空间two
namespace two
{
    class Demo
    {
        public $name="mengmianren";
    }
    function add($a,$b)
    {
        return $a+$b;
    }
    const SITE="萌面人资料铺";
    //查看当前的命名空间
    echo "当前的命名空间是:".__NAMESPACE__."<br>";
//声明var_dump()函数  因为在命名空间two中  所以不会与系统的var_dump()函数冲突
    function var_dump($name)
    {
        return "我是命名空间two中的函数var_dump(),我的名字是:".$name;
    }
    echo var_dump('mengmianren');
    echo "<br>";
    \var_dump(new Demo());

//此时,如果要调用全局的var_dump()需要加\
}

//默认就是全局,请省略空间标识符
namespace
{
    echo "<br>";
    var_dump([1,2,3,4,5,6]);
}

执行:

18-3命名空间的声明与全局空间访问–PHP实战开发教程第4张


喇恨橙厘疚彭卯柑溶涣烫儒敢