2013-02-26 55 views
5

有什麼辦法可以做出「多次使用」?「使用」php語句多重?

我使用的插件在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或其他方法制作的自動加載技術?

回答

2

沒有,這是不可能的 - 由設計。

試想一下,你有兩個「通配符」使用,像這樣的:在你的代碼

use Foo\*; 
use Bar\*; 

現在在什麼地方,你會訪問類的命名空間之一的,就像這樣:

$a = new Something(); 

現在,Something類可能需要自動加載,但要這樣做,PHP將需要解析您的類的完整名稱空間路徑:Foo\SomethingBar\Something?或者我們的意思是在當前命名空間內的類Something

+0

好吧,其他語言(如Java)如何解決此問題? – r1pp3rj4ck 2013-03-05 10:37:33

+0

簡單:Java沒有這種自動加載功能。 – 2013-03-08 12:44:29

5

爲什麼不這樣做?

use Doctrine\ORM\Mapping as ORM;

然後在你的註釋......

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

等等......

+0

在Symfony上它可以工作,但不是在Silex中......它說類似「它不是一個有效的映射實體」.. – mowcixo 2013-02-26 14:33:30

+2

@ user2111499它應該在任何地方工作,因爲它是一個PHP功能。你能顯示一些代碼嗎? – 2013-02-26 14:59:14

+0

@ user2111499您是否在類的註釋中添加了@ORM \ Entity? – JamesHalsall 2013-02-26 15:06:26