你的程序 全部是 各有用途的对象: 一个 “Mailer” 对象可以帮助你发送邮件,而另一个对象可以帮你把数据入库。 你程序中的几乎 所有 事都是由这些对象中的某一个来完成的。每当你安装一个新bundle,你就拥有了更多的对象!
在Symfony中,这些有用的对象被称为 services(服务),每一个服务都被存放于一个特殊的名为 service container(服务容器)之中。如果你有服务容器,那么你可以使用服务的id来取出服务:
$logger = $container->get('logger'); $entityManager = $container->get('doctrine.orm.entity_manager');
取得并使用服务
// src/AppBundle/Controller/ProductController.php // ... use Psr\Log\LoggerInterface; /** * @Route("/products") */ public function listAction(LoggerInterface $logger) { $logger->info('Look! I just used a service'); // ... }
命令获取所有的服务
php bin/console debug:container
常用的服务ID
Service ID | Class name |
---|---|
doctrine | Doctrine\Bundle\DoctrineBundle\Registry |
filesystem | Symfony\Component\Filesystem\Filesystem |
form.factory | Symfony\Component\Form\FormFactory |
logger | Symfony\Bridge\Monolog\Logger |
request_stack | Symfony\Component\HttpFoundation\RequestStack |
router | Symfony\Bundle\FrameworkBundle\Routing\Router |
security.authorization_checker | Symfony\Component\Security\Core\Authorization\AuthorizationChecker |
security.password_encoder | Symfony\Component\Security\Core\Encoder\UserPasswordEncoder |
session | Symfony\Component\HttpFoundation\Session\Session |
translator | Symfony\Component\Translation\DataCollectorTranslator |
twig | Twig_Environment |
validator | Symfony\Component\Validator\Validator\ValidatorInterface |
namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class ProductController extends Controller { /** * @Route("/products") */ public function listAction() { $logger = $this->container->get('logger'); $logger->info('Look! I just used a service'); // ... } }
控制器内部方法调用request
$this->get('request_stack')->getCurrentRequest()->request->all();//获取所有传输值
转载请注明:cooljun小窝 » symfony服务器容器