1.只有三种类型受命名空间的影响:类、函数、常量
2.使用namespace来声明(类似文件目录)
3.除非使用declare,否则namespace前不能有任何PHP和HTML代码(包括空白符)
4.同一命名空间可以定义在多个文件中,但分割开的命名空间中,上述三个类型也不能重名
<?php
namespace wo;
const NAME=1;
class Demo {
static function one(){
echo "11111<br>";
}
}
function test(){
echo "22222222<br>";
}
\wo\Demo::one();
\wo\test();
echo \wo\NAME;
?>
5.子命名空间(多层目录)
<?php
namespace wo\jia;
const NAME=1;
class Demo {
static function one(){
echo "11111<br>";
}
}
function test(){
echo "22222222<br>";
}
\wo\jia\Demo::one();
\wo\jia\test();
echo \wo\jia\NAME;
?>
6.同一文件中定义多个命名空间(不提倡),如果是连续声明,则以最后一个为准(覆盖)。非连续可以声明多个,建议用{}标明,用于多个PHP脚本合并到一个文件中。如下:
<?php
namespace wo\jia{
const NAME=1;
class Demo {
static function one(){
echo "11111<br>";
}
}
function test(){
echo "22222222<br>";
}
\wo\jia\Demo::one();
\wo\jia\test();
echo \wo\jia\NAME;
}
namespace ni\jia{
const NAME=2;
}
?>
7.将全局非命名空间代码和命名空间代码组合,只能使用{},全局代码用匿名的namespace{}包裹,不要在{}外部放任何代码,如下:
<?php
namespace wo\jia{
const NAME=1;
class Demo {
static function one(){
echo "11111<br>";
}
}
function test(){
echo "22222222<br>";
}
\wo\jia\Demo::one();
\wo\jia\test();
echo \wo\jia\NAME."<br>";
}
namespace ni\jia{
const NAME=2;
}
namespace{
var_dump(100);
}
?>
8.命名空间下的(类/常量/函数)动态调用:必须使用限定性名称(不一定完全限定)
<?php
namespace wo\jia{
const NAME=1;
class Demo {
static function one(){
echo "11111<br>";
}
}
function test(){
echo "22222222<br>";
}
$s="wo\jia\Demo";//$s=__NAMESPACE__.'\Demo';
$s::one();
}
?>
9.魔术常量__NAMESPACE__:输出空间名称
10.namespaceXXX():可以代表当前空间下
11.命名空间的别名(使用方便):
<?php
namespace net\lampbrother\www;
//use net\lampbrother\www as lamp;
use net\lampbrother\www;//www
function demo(){
echo "11111<br>";
}
lamp\demo();
?>
12.命名空间导入
13.对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。(类似JS中各种链)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。