Как включить практически идентичный файл в отдельное пространство имен (для целей отладки)

Я столкнулся со следующей проблемой 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();

Как я могу исправить приведенный выше код для достижения моей цели?

1

Решение

Что вам нужно сделать, это добавить в пространство имен 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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]