<?php
/**命名空间
*/
namespace One{
const NAME = 'xiaopi';
class Db
{
public static function demo()
{
return __METHOD__;
}
}
function hello()
{
return '你好'.NAME.'<hr>';
}
//echo hello();
//echo \Two\NAME;
}
namespace Two{
const NAME = 'xiaoli';
class Db
{
public static function demo()
{
return __METHOD__;
}
}
function hello()
{
return '你好'.NAME.'<hr>';
}
echo NAME; //非限定名称,类似当前目录的文件 全命名空间使用
echo THREE\Show::NAME.'<br>'; //限定名称:使用全名空间前缀 类似子目录/相当目录
echo \One\NAME.'<hr>'; //完全限定名称:从根空间或全局空间开始向下访问
echo \Two\THREE\Show::NAME;
echo THREE\Show::NAME.'<br>';
}
namespace Two\THREE{
class Show
{
const NAME = '我是'.__NAMESPACE__.'常量';
}
}
namespace {
echo One\db::demo(),'<br>';
echo Two\db::demo(),'<br>';
echo Two\THREE\Show::NAME;
}
//1.多个命名空间之间的分隔符是反斜线\
//2.全局空间和根空间也是反斜线
//3.一个文件中有多个命名空间时访问全名空间下的常量需要注意顺序,如果在类中可以不在意顺序直接访问点击 "运行实例" 按钮查看在线实例
<?php
/**
* 使用命名空间
*/
namespace TEST2;
include 'test3.php';
use TEST3\Test3;
use TEST3\Test2 as newtest;
use TEST4\a\b\c\d\Test4 as T4;
class Test2{
public static function test2(){
return __METHOD__;
}
}
echo Test2::test2().'<br>';
echo newtest::test3().'<br>';
echo Test3::test3().'<br>';
echo T4::test4();点击 "运行实例" 按钮查看在线实例
<?php
namespace TEST3;
class Test3{
public static function test3(){
return __METHOD__;
}
}
class Test2{
public static function test3(){
return __METHOD__;
}
}
namespace TEST4\a\b\c\d;
class Test4{
public static function test4(){
return'我是<strong style="color:red;">'.__METHOD__.'</strong>方法';
}
}点击 "运行实例" 按钮查看在线实例
4.非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
非限定名称: 当前文件或空间中使用时.省略空间名称,使用默认或当前的命名空间 . demo1
限定名称:通常用在子父类访问,或全局空间访问其他空间 前面需要添加命名空间才可访问 demo/ demo/demo1
完全限定名称:用在从根空间/目录访问时 包含了全局前缀操作符及空间名称 /deom/demo1
三者的关系就是像一个目录文件 可以理解为: 完全限定名称>限定名称>非限制名称 很类似 linux下访问目录的规则.
1.cd /1/2/3 完全限制精确打开
2.cd ../1 上级或cd 2/3 下级
3.不限制名称 当前目录直接打开 cd 2
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号