我们有一个自己的类,希望在symfony中使用,我们最好把他设置为一个服务,如果他是一个全功能的工具我们也可以把他做成一个独立的bundle,这里我们只介绍第一种简单的服务方式。
那么在你的控制器中,你使用自己定义的这个服务,但是你自定义的这个服务,可能无法满足你的需求,因为你的服务类可能还依赖于其他的symfony的内部服务,例如你使用doctrine ORM去操作数据库,使用session来完成消息提示,想用路由名来生成url你要使用路由服务,等等。
整个过程很简单,在你的服务配置文件中,加入相应的服务为参数(依赖注入):
1 2 3 4 |
services: custom_class: class: AppBundle\Custom\DemoClass arguments: ["@doctrine.orm.entity_manager"] |
在你的AppBundle\Custom\DemoClass析构函数中接收参数即可:
1 2 3 4 5 6 7 8 |
class DemoClass { protected $EntityManager; public function __construct(EntityManager $EntityManager) { $this->EntityManager = $EntityManager; } |
下面我总结了一些常用的services服务
@doctrine.orm.entity_manager | \Doctrine\ORM\EntityManager |
@router | \Symfony\Bundle\FrameworkBundle\Routing\Router |
@session | \Symfony\Component\HttpFoundation\Session\Session |