我在symfony项目中创建了一个库,位于bundle下的Library文件夹中。这是代码的样子:
namespace AppBundle\Library;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\Common\Persistence\ObjectManager;
class MooLibrary
{
private $container = null;
private $em = null;
public function __construct(ObjectManager $em, Container $container)
{
$this->container = $container;
$this->em = $em;
}
public function getTypeContent($type = null, $id = 0)
{
$content = array();
$dataClass = ucfirst($type);
$content = $this->em->getRepository('AppBundle:Post')->findOneById($id);
return $content;
}
}
我还在服务中添加了:
post_type:
class: AppBundle\Library\MooLibrary
arguments: [ @doctrine.orm.entity_manager, @service_container ]
这给了我一个错误:
不在对象上下文中时使用$ this
答案 0 :(得分:2)
我不知道您的完整yml文件,但您已在service
部分中对其进行了定义。
services:
moolib:
class: AppBundle\Library\MooLibrary
arguments: [ @doctrine.orm.entity_manager, @service_container ]
你的班级看起来正确。
然后你可以用:
来调用它$this->get('moolib');
另一件事是,有一些规范应该如何构建Symfony应用程序。
https://symfony.com/doc/current/bundles/best_practices.html
通常情况下,您创建的文件夹DependencyInjection
是最佳做法,但它是可选的。