Symfony 4:在控制器之外挣扎和自动装配

时间:2018-10-11 04:12:29

标签: php symfony4

我现在已经做过无数次了,也许是因为自动装配和依赖注入对我来说太复杂了,我只需要解决它,但是经过不断的搜索之后,我仍然在理解正确的解决方法上遇到了问题

我有一个试图从中创建查询的类-只要扩展“ Controller”,这一切都很好,只要我偏离了它,我就会得到:

$em = new EntityManagerInterface();
    $query = $this->em->createQuery('SELECT m FROM App:Main m')
            ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
    print_r($query);

这很明显,您不能实例化一个界面

  

不能使接口Doctrine \ ORM \ EntityManagerInterface处于静态状态

或者:

Use App\Util\Db\Dbhelper;
$db = $this->container->get(DbHelper::class);
$result = $db->allMains();
  

函数App \ Util \ Db | DbHelper :: __ construct()的参数太少,0传递了1个预期值

其他类显然期望EntityManagerInterface的依赖项注入。非常感谢所有帮助,我不知道为什么我似乎无法正确地解决这个问题。

DbHelper类别:

namespace App\Util\Db;

use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use App\Entity\Main;

class DbHelper
{
    protected $em;

    public function __construct(EntityManagerInterface $em)
    {
        $this->em = $em;
    }

    public function getNames()
    {
        $names = $this->em->getRepository(Main::class)->findAll();
        foreach ($names as $name) {
            echo $name->getName();
        }
    }
}

0 个答案:

没有答案