我正在一起使用 php-di 和 Doctrine。要使用 Doctrine,有一个bootstrap.php
构造$entityManager
对象的文件。该$entityManager
对象是在该文件中全局定义的,因此要在我的类中使用它,我必须注入它。
例如假设下面的类:
<?php
interface IAccountService{
function login(string $username, string $password);
}
class AccountService implements IAccountService {
private $entityManager;
public function __construct($entityManager) {
$this->entityManager = $entityManager;
}
public function login(string $email, string $password){
$q = $this->entityManager->createQueryBuilder()
->select('us.id, us.name, us.email, us.passwordHashed')
->from('User', 'us')
->where('us.email = ?1 AND us.passwordHashed = ?2')
->setMaxResults( '1' )
->setParameter(1,$email)
->setParameter(2, HASHHELPER::hashPasswordSHA512($password, $email))
->getQuery();
// echo $q->getSql();
$users = $q->getResult();
// print_r($users);
if(!empty($users) && count($users) > 0){
$_SESSION["USER"] = $users[0];
return true;
}
else{
return false;
}
}
}
?>
但是类型的$entityManager
定义不明确,或者当我调用echo gettype($entityManager);
它时会打印"object"
结果。所以我想我需要通过它的名字而不是它的类型来注入这个参数。我的意思是这样的:
$container->set('$entityManager', $entityManager);
但这不起作用。解决方案和最佳方法是什么?