tp的命名空间

时间:2022-09-08 09:09:01

当开发大型项目的时候,可能需要成千上万的文件,面向对象通过命名空间解决这个问题的。PHP命名空间是PHP5.3以后出现的。

命名空间中可以出现:类,函数,常

只有const定义的常量命名空间才有效。命名空间的名字必须符合PHP命名的规则。


命名空间的声明和使用:

<?php
namespace China;
const nation = '中国<br>';
function getInfo(){
echo '我是中国人<br>';
}

namespace USA;
const nation = 'USA<br>';
function getInfo(){
echo 'I am a American<br>';
}

echo '<meta charset="utf-8" />';
getInfo(); //非限定名称访问
\China\getInfo(); //完全限定名称访问
输出结果:

I am a American

我是中国人



命名空间多级访问一:

<?php
namespace China\beijing\HaiDian;
class Person{
static $name = "李白<br>";
}

namespace USA\Washington;
class Person{
static $name = 'Abraham Lincoln';
}

echo '<meta charset="utf-8">';
echo Person::$name;
echo \China\Beijing\HaiDian\Person::$name;
运行结果:

Abraham Lincoln李白


命名空间多级访问二:

<?php
namespace China\Beijing\HaiDian;
function getInfo(){
echo '这是China\Beijing\HaiDian命名空间';
}

namespace China\Beijing;
function getInfo(){
echo '锄禾日当午';
}

echo '<meta charset="utf-8">';
getInfo(); //非限定名称
HaiDian\getInfo();


空间元素访问的三种形式:

1、非限定名称访问

echo getInfo()

类似于:require (‘getinfo.php’);

2、限定名称访问,是相对限定

China\getInfo();

类似于:require(‘China/getInfo.php’);

3、完全限定访问

\China\getInfo()

类似于:require(‘C:\China\getinfo.php’);


命名空间注意事项

1、最顶层的\表示的是公共空间

2、namespace 必须在最上面

3、命名是虚拟的空间,不是真实存在的目录,当时ThinkPHP的命名空间是真实的地址路径

4、当前文件中具有命名空间的文件,不会改变当前文件的命名空间