2011-11-18 52 views
5
加载实体

比方说,我有两个软件包:如何从另一个包上的Symfony2

  1. Compagny\InterfaceBundle
  2. Compagny\UserBundle

我如何可以加载UserBundle的实体InterfaceBundle的控制器?

ControllerCompagny/InterfaceBundle

<?php 
// src/Compagny/InterfaceBundle/Controller/DefaultController.php 

namespace Compagny\InterfaceBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Compagny\UserBundle\Entity; // I believed this line will do the trick, but it doesn't 

class DefaultController extends Controller 
{ 
    public function indexAction() 
    { 
     $user = new User(); 
    } 
} 

的的EntityCompagny/UserBundle

<?php 

namespace Compagny\UserBundle\Entity 

class User { 
public $name; 
public function setName($name) { 
    // ... 
} 
public function getName() { 
    // ... 
} 
} 

(让我们说,在这个例子中,该用户类不使用Doctrine2,因为它不”不需要连接到数据库)。

回答

12
<?php 
// src/Compagny/InterfaceBundle/Controller/DefaultController.php 

namespace Compagny\InterfaceBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Compagny\UserBundle\Entity\User; // It's not a trick, it's PHP 5.3 namespacing! 

class DefaultController extends Controller 
{ 
    public function indexAction() 
    { 
     $user = new User(); 
    } 
} 

你当然可以,你只是从另一个命名空间使用一个类。它是一个实体并不重要!您当然也可以查询该实体的实体管理器。