1

次の PHP コードの問題に直面しています。

現時点では、私の PHP コードは名前空間を使用していません。インクルード ファイルに変更を加えたfoobarinc.phpので、foobarinc-v1.php(古いバージョン) とfoobarinc-v2.php(新しいバージョン) の 2 つのバージョンができました。foo()インクルード ファイルには、両方のファイルに存在するいくつかの関数 (たとえば) があります。現時点でfoobarinc-v2.phpはいくつかのバグがあるため、foo()fromを使用してコードをデバッグする必要がありますfooinc-v1.php(少なくとも動作することがわかっているため) が、他の場所でfoo()fromを呼び出す必要もあります。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();

上記のコードを修正して目的を達成するにはどうすればよいですか?

4

1 に答える 1

2

あなたがする必要があるのは、次のように foobarinc-v1.php 名​​前空間に追加することです:

namespace foobarinc1;

foob​​arinc-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

于 2015-02-10T18:13:06.397 に答える