1.命名空间解决的问题
1)用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突;
2)为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
作用:对类、函数和和const定义的常量起作用
2.命名空间的用法
<?php
namespace MyProject ;
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
?>
举例说明
<?php
namespace pro1;
function func(){
echo "func1";
}
const x = "name1";
namespace pro2;
function func(){
echo "func2";
}
const x = "name2";
3.命名空间的使用
<?php
namespace pro1;
function func(){
echo "func1";
}
const x = "name1";
\pro1\func();
echo \pro1\x;
namespace pro2;
function func(){
echo "func2";
}
const x = "name2";
\pro2\func();
echo \pro2\x;
<?php
namespace MyProject {
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
}
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来
<?php
namespace MyProject {
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
}
namespace { // global code
session_start ();
$a = MyProject \ connect ();
echo MyProject \ Connection :: start ();
}