(四处走走)谈到 Symfony 服务时:
代替
$doctrine = $this->container->get('doctrine');
利用
$doctrine = $this->getDoctrine();
如您所见,Symfony 允许您直接从 $this
变量访问它的大部分服务。NetBeans 将知道使用什么自动完成。
让我们看看为什么会这样(在 Controller 类中)

可能是因为 Controller 类使用 USE 语句导入 Registry 类,
use Doctrine\Bundle\DoctrineBundle\Registry;
然后在方法注释注释中声明返回的对象类型
/*
* @return Registry
*/
如果你调用 $this->container->get('doctrine'); 直接然后自动完成将被省略,您将不得不使用下面的内容。
(答案)到目前为止,还没有神奇的自动完成功能。使用 Php Storm(它可以满足您的要求)。对于那些选择坚持使用 NetBeans 的人,您需要使用手动注释,如下例所示:
我们可以将 NetBeans 指向一个应该用于自动完成的类。
1)在项目目录的终端中搜索您要导入的服务:
php bin/控制台调试:容器
如果您知道要查找的内容,请改用:
php bin/console d:container | grep 学说
...
学说------------------------------------------------ -------- Doctrine\Bundle\DoctrineBundle\Registry
...
2) 如果这不是服务,请使用get_class() PHP 内置函数来获取对象的类名,它是特定变量。或者使用反射类。由你决定。
3) 一旦你知道了类名,为了更好的可读性声明 USE 语句
use Doctrine\Bundle\DoctrineBundle\Registry;
4) 现在我们知道了特定变量中对象实例的类名是什么,我们准备通过使用注释注释通知 NetBeans 我们知道的内容,以便它可以启用自动完成。
/**
* @var $doctrine Registry
*/
$doctrine = $this->container->get('doctrine');
现在启用了自动完成。类型
$doctrine->|
然后按Ctrl+Space。见下图:
