2012-08-17 48 views
2

特定的文件,我覺得很討厭,當我在所有文件中使用一些類似use statements有什麼辦法,我所有的控制器始終在Symfony2中

時不時地,我有所有的conrollers很常見的線條複製像

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 

是否有我在一個文件中定義的任何方式,他們將所有控制器都acroos我的整個應用程序中使用。

回答

2

命名空間存在,以防止命名衝突跨文件,這就是爲什麼它很可能不明智的,你在問什麼。它可能會導致幻影錯誤,因爲您忘記了別名類名,所以無法解釋道路。更糟的是,如果別人要維護你的代碼,他們真的可以了小溪試圖找出爲什麼他們Controller類將無法正確加載。

然而,如果你真的想,你可以使用class_aliasdocs做到這一點。我建議您用老式的命名空間和use聲明堅持,但如果你想忽略我的建議,你可以做到以下幾點:

<?php // namespace_aliases.php 

class_alias(
    'Symfony\Bundle\FrameworkBundle\Controller\Controller', 
    'Controller' 
); 
class_alias(
    'Sensio\Bundle\FrameworkExtraBundle\Configuration\Method', 
    'Method' 
); 

// etc. 

然後在其他地方只包括namespace_aliases.php文件。要注意,如果傳遞給class_alias一流的名字還沒有被定義或加載的任何註冊的類自動加載機將依次加載它援引這一點很重要。

0

那麼,如果你使用IDE這個煩惱可以最小化。例如,NetBeans會自動完成該類的完整FQCN。然後,您可以使用其fix import功能將定義移至使用部分。 PHPStorm和Eclipse PDT也有類似的功能。

相關問題