5

有什么办法可以“一机多用”吗?

我在 Silex 中使用了一个插件来使用 ORM,并且在每个实体中我必须像这样使用:

use Doctrine\ORM\Mapping\Entity,
    Doctrine\ORM\Mapping\Table,
    Doctrine\ORM\Mapping\Id,
    Doctrine\ORM\Mapping\Column,
    Doctrine\ORM\Mapping\GeneratedValue,
    Doctrine\ORM\Mapping\ManyToOne,
    Doctrine\ORM\Mapping\ManyToOne;

所以,我的问题是,PHP 中是否有像 Java 这样的“多重使用”?我是说:

use Doctrine\ORM\Mapping\*;

或者也许使用由 Silex/Symfony 或其他东西制作的自动加载技术?

4

2 回答 2

5

为什么不这样做...

use Doctrine\ORM\Mapping as ORM;

然后在你的注释中......

/**
 * @ORM\Column(type="int")
 */
 protected $name;

等等...

于 2013-02-26T14:00:48.613 回答
2

不,这是不可能的——设计使然。

想象一下,您有两个“通配符”用法,如下所示:

use Foo\*;
use Bar\*;

现在,在您的代码中的某处,您将访问其中一个命名空间的类,如下所示:

$a = new Something();

现在,该类Something可能需要自动加载,但要这样做,php 需要解析您的类的完整命名空间路径:Foo\Something或者Bar\Something?或者我们的意思是Something当前命名空间中的类?

于 2013-02-26T18:29:43.527 回答