Я столкнулся со следующей проблемой 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 для достижения своей цели?
например Я хотел бы сделать:
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
Других решений пока нет …