如何从Symfony2上的另一个Bundle加载实体

lep*_*pix 5 php oop entity bundle symfony

假设我有两个捆绑包:

  1. Compagny\InterfaceBundle
  2. Compagny\UserBundle

如何在InterfaceBundle的控制器中加载UserBundle实体?

Controller我的Compagny/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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Entity我的Compagny/UserBundle:

<?php

namespace Compagny\UserBundle\Entity

class User {
 public $name;
 public function setName($name) {
  // ...
 }
 public function getName() {
  // ...
 } 
}
Run Code Online (Sandbox Code Playgroud)

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

Ald*_*nio 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用其他命名空间中的类.事实上它是一个实体并不重要!您当然可以查询该实体的实体管理器.