クロージャーを使用してクラスを「再宣言」する方法を見つけようとしています。これは私がこれまでに持っているものです:
名前空間を除いて同一の 2 つの単純なクラスがあります。test2.php の名前空間は「bla」と呼ばれ、new.php では「newname」と呼ばれます。それ以外は、まったく同じです。
namespace bla; //test2.php
class A
{
public function __construct()
{ }
public function bla()
{
echo '[A bla]';
}
}
include ("new.php");
include ("test2.php");
use newname\A as A; // <-- dynamic
$a = new A();
$a->bla();
したがって、このコードは、'test2.php' のクラスではなく、'new.php' クラスのメソッドを実行するだけです。これは実際に私が必要とするものです。しかし、私の問題はコードの最後の部分です。通常、私は名前空間を使用していたでしょう:
$a = new bla\A(); //Defined in 'test2.php'
$a->bla();
しかし、「use as」ステートメントのため、その行を次のように変更する必要があります。
$a = new A(); //Defined in 'test2.php'
$a->bla();
したがって、「A()」の前に名前空間がありません。
「bla\A()」名前空間 (test2.php で定義されている) を保持する方法はありますが、「new.php」からメソッドを呼び出しますか??