我正在尝试找到一种使用闭包“重新声明”类的方法。这是我到目前为止所得到的:
我有两个相同的简单类,除了命名空间。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();
所以这段代码只是简单地执行'new.php'类中的方法,而不是'test2.php'中的类。这实际上是我需要的。但我的问题是代码的最后一部分。通常我会使用命名空间:
$a = new bla\A(); //Defined in 'test2.php'
$a->bla();
但是由于“用作”声明,我必须将该行更改为:
$a = new A(); //Defined in 'test2.php'
$a->bla();
所以在“A()”前面没有命名空间。
有没有办法保留“bla\A()”命名空间(在 test2.php 中定义),但它仍然从“new.php”调用方法?