php - 如何在单独的命名空间中包含几乎相同的文件(用于调试目的)

标签 php debugging namespaces include namespace-organisation

我面临以下 PHP 代码问题:

目前我的 PHP 代码没有使用任何命名空间。我修改了一个包含文件 foobarinc.php所以我现在有两个版本 foobarinc-v1.php (旧版本)和 foobarinc-v2.php (新版本)。包含文件具有一些功能(例如 foo() ),它们存在于两个文件中。目前foobarinc-v2.php有一些错误,所以我需要用 foo() 调试我的代码来自 fooinc-v1.php (因为至少我知道它有效)但我还需要调用 foo()来自 foobarinc-v2.php在其他地方。我不想更改 `foobarinc-v1.php 文件中的任何内容,因为我将需要它,但如果需要,我愿意为文件添加一个命名空间。我可以使用 PHP 命名空间来实现我的目的吗?

例如我想要做:

主文件:

include("includes/foobarinc-v2.php");

function main() {

  hello(); // from main.php

  namespace myDebugNameSpace {

    include("includes/foobarinc-v2.php");

    $a = foo(); // foo() version 2

    outerNameSpace::bar($a); // bar() version 1

  }

  world(); // from main.php

  foo(); // foo() version 1

}

main();

如何修复上述代码以达到我的目的?

最佳答案

您需要做的是在 foobarinc-v1.php 命名空间中添加如下:

namespace foobarinc1;

foob​​arinc-v2.php 几乎一样:
namespace foobarinc2;

主文件
include 'foobarinc-v1.php'; 
include 'foobarinc-v2.php';
use foobarinc1;
use foobarinc2;

foobarinc1->foo();
foobarinc2->foo();

您可以在此处找到更多信息:
http://php.net/manual/pl/language.namespaces.php

关于php - 如何在单独的命名空间中包含几乎相同的文件(用于调试目的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438503/

相关文章:

windows - 内核调试: Windows 7 hangs at boot time

php - 输入中的意外字符 : '\' (ASCII=92) state=1

php - 如何从数组中删除空值?

php - Html 代码正在打印而不是显示输出

javascript - 怎么调404页面去搜索

c# - 停止调试断言?

PHP 响应缓存 : file vs MySQL

c++ - 使用 SFML 库在 Xcode 中调试期间不显示变量值

kubernetes - 允许多个团队使用不同功能在 Kubernetes 中部署和测试他们的更改的最佳方法是什么?

ruby-on-rails - 链接到命名空间但从 url 中删除命名空间?