0

我开始在我的项目中使用 Doctrine2。然而,我不明白一些事情。通常,我正在使用 PHP 类,我的问题是:

require_once 'bootstrap.php';
class test {

   public function addEmployee($name, $lastname) {
          $emp = new Employee();
          $emp->name = $name;
          ... other code
          $entityManager->persist($emp);
          $entityManager->flush();
   }

}

给出实体管理器被 noc 声明为变量的错误。但是,当我在函数中包含 bootstrap.php 时,它可以工作。像这样:

class test {

   public function addEmployee($name, $lastname) {

          require_once 'bootstrap.php';

          $emp = new Employee();
          $emp->name = $name;
          ... other code
          $entityManager->persist($emp);
          $entityManager->flush();
   }

}

我认为如果我在每个函数中都包含它会很慢,所以我的问题是:有没有其他方法可以为类中的所有函数包含“bootstrap.php”?

4

1 回答 1

0

使用依赖注入。例如

class Test {
    /**
     * @var \Doctrine\ORM\EntityManager
     */
    private $em;

    public function __construct(\Doctrine\ORM\EntityManager $entityManager) {
        $this->em = $entityManager;
    }

    public function addEmployee($name, $lastname) {
        // snip

        $this->em->persist($emp);
        $this->em->flush();
    }
}

require_once 'bootstrap.php';
$test = new Test($entityManager);
于 2013-09-09T05:34:13.513 回答