使用'使用'在包含的PHP文件中

时间:2016-11-15 16:38:39

标签: php

所以我有一个config.php文件,其中包含以下内容:

use PHPOnCouch\Couch;
use PHPOnCouch\CouchAdmin;
use PHPOnCouch\CouchClient;

然后我有另一个名为let {#1}}的文件,其中包含 config.php

index.php

然后我require_once("config.php"); include("page.php"); 使用 CouchClient ,如下所示:

page.php

但是在 page.php 上,我收到以下错误:

  

致命错误:Class' couchClient'在page.php中找不到

不应该将此页面连接到我的 config.php ,这样我就不必将它放在我的 page.php 中了吗? / p>

1 个答案:

答案 0 :(得分:3)

page.php中执行:

$client = new \PHPOnCouch\CouchClient ($URL, $DB);

use PHPOnCouch\CouchClient;
$client = new CouchClient ($URL, $DB);

这也有效

use PHPOnCouch\CouchClient as SomeOtherFunnyName;
$client = new SomeOtherFunnyName ($URL, $DB);

并在php中阅读有关namespaces的更多信息。

小更新:

  

不应该将此页面连接到我的config.php,这样我就不必将它放在我的page.php中了吗?

  • 每个include都有自己的本地无名称空间或一个或多个命名空间!
  • 如果没有给出命名空间,则您具有无名空间。 换句话说,您总是可以在php脚本中使用namespace { /*code*/ }
  • 如果您在命名空间中,则必须通过use包含所有需要的类。 并且因为所有文件都有自己的命名空间,所以必须通过use
  • 包含它
  • 以这种方式表示命名空间:没有大括号的namespace xyz;用于仅包含一个命名空间的文件!

一个简单的例子(只有一个文件):

    namespace a {
      class a {}
    }
    namespace b {
      use a\a;
      class b extends a{}
    }
    namespace {
      use a\a;
      use b\b;
      new a;
      new b;
    }

假设最后的命名空间没有给出,我们将其包含在一个新文件中,我们可以

    namespace mynamespace;
    use a\a;
    use b\b as x;
    new a;
    new x;