如何在单独的命名空间中包含几乎相同的文件(用于调试目的)
How to include an almost identical file in a separate namespace (for debugging purposes)
我面临以下 PHP 代码问题:
目前我的 PHP 代码没有使用任何名称空间。我对包含文件 foobarinc.php
进行了修改,因此我现在有两个版本 foobarinc-v1.php
(旧版本)和 foobarinc-v2.php
(新版本)。包含文件有一些函数(例如 foo()
),它们在两个文件中都存在。目前 foobarinc-v2.php
有一些错误,所以我需要使用 fooinc-v1.php
中的 foo()
调试我的代码(因为至少我知道它有效)但我还需要调用 foo()
来自其他地方的foobarinc-v2.php
。我不想更改 `foobarinc-v1.php 文件中的任何内容,因为我将按原样需要它,但如果需要,我愿意向该文件添加名称空间。我可以使用 PHP 命名空间来实现我的目的吗?
例如我想做:
main.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;
foobarinc-v2.php几乎一样:
namespace foobarinc2;
Main.php
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 代码问题:
目前我的 PHP 代码没有使用任何名称空间。我对包含文件 foobarinc.php
进行了修改,因此我现在有两个版本 foobarinc-v1.php
(旧版本)和 foobarinc-v2.php
(新版本)。包含文件有一些函数(例如 foo()
),它们在两个文件中都存在。目前 foobarinc-v2.php
有一些错误,所以我需要使用 fooinc-v1.php
中的 foo()
调试我的代码(因为至少我知道它有效)但我还需要调用 foo()
来自其他地方的foobarinc-v2.php
。我不想更改 `foobarinc-v1.php 文件中的任何内容,因为我将按原样需要它,但如果需要,我愿意向该文件添加名称空间。我可以使用 PHP 命名空间来实现我的目的吗?
例如我想做:
main.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;
foobarinc-v2.php几乎一样:
namespace foobarinc2;
Main.php
include 'foobarinc-v1.php';
include 'foobarinc-v2.php';
use foobarinc1;
use foobarinc2;
foobarinc1->foo();
foobarinc2->foo();
您可以在这里找到更多信息: http://php.net/manual/pl/language.namespaces.php