在一个文件中声明两个名称空间

时间:2014-03-24 10:31:10

标签: php namespaces declaration declare

正如php reference

所述
  

使用namespace关键字声明命名空间。包含的文件   命名空间必须先在文件顶部声明命名空间   任何其他代码 - 有一个例外:declare关键字。

但是我们在参考资料中进一步提供了以下代码段:

<?php
namespace MyProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

namespace AnotherProject; //This namespace declaration doesn't located at the top of the file. It's unclear.

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>

2 个答案:

答案 0 :(得分:1)

您可以稍后在文件中切换到另一个命名空间,但如果您 使用命名空间,则必须将命名空间声明为文件。即,这工作:

<?php

echo 'foo';

namespace Bar;

echo 'bar';

答案 1 :(得分:0)

MyProject引用MyProject命名空间的前三行中声明一个,而AnotherProject下的其他三个引用AnotherProject命名空间。 如果至少有一个名称空间被声明为top,则文件将被正确解析(名称空间将以dinamically方式切换)

为了更清楚,你甚至可以这样做

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace AnotherProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}
?>

但强烈建议不要在同一个php脚本中声明两个名称空间