本文概述
- 1.创建助手类
- 2.注册服务
- 3.例子
在本文中, 我将向你介绍如何检索Symfony 4项目的根目录路径以及服务容器中可用的其他参数。
1.创建助手类我们将通过将注册为服务的帮助程序来检索容器接口的参数。 helper类如下, 在/ yourapp / src / Service目录中创建ContainerParametersHelper.php文件, 内容如下:
<
?php// app/src/Service/ContainerParametersHelper.phpnamespace App\Service;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class ContainerParametersHelper {private $params;
public function __construct(ParameterBagInterface $params){$this->
params = $params;
}/*** This method returns the root directory of your Symfony 4 project.* * e.g "/var/www/vhosts/myapplication"* * @return type*/public function getApplicationRootDir(){return $this->
params->
get('kernel.project_dir');
}/*** This method returns the value of the defined parameter.* * @return type*/public function getParameter($parameterName){return $this->
params->
get($parameterName);
}}
2.注册服务如果你在项目中启用了自动装配功能(在新的symfony Web项目中默认启用), 仅在指定目录中创建文件就足够了, 你可以跳过此步骤。你可以验证项目是否启用了自动装配功能, 打开项目的services.yaml文件并检查autowire和autoconfigure选项是否设置为true:
# app/config/services.yamlservices:# default configuration for services in *this* file_defaults:autowire: true# Automatically injects dependencies in your services.autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
如果看起来像这样, 就可以开始了(转到步骤3)。如果不是, 请手动注册服务。
3.例子现在, 为了帮助你了解通过依赖注入注册了此帮助程序类的简单程度, 我们提供了两个基本示例:
如何获取根目录
如我们的助手类ContainerParametersHelper所述, 我们已经创建了一个返回目录的方法, 因此我们只需要在需要的地方注入该类即可。在此示例中, 我们将在某个控制器中需要此类, 并将打印此方法检索的根目录的路径作为响应:
<
?phpnamespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Service\ContainerParametersHelper;
class UserController extends AbstractController{public function index(ContainerParametersHelper $pathHelpers){// Renders in the browser an empty html page with an output like:// /var/www/vhosts/myprojectdirectoryreturn new Response($pathHelpers->
getApplicationRootDir());
} }
如何检索其他容器参数
当我们使用参数袋时, 你将能够检索在项目的services.yaml文件中定义的参数:
# This file is the entry point to configure your own services.# Files in the packages/ subdirectory configure your dependencies.# Put parameters here that don't need to change on each machine where the app is deployed# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration# /app/config/services.yamlparameters:locale: 'en'
如先前的服务文件中所示, 我们已经定义了语言环境参数, 因此我们可以像这样从服务中检索它:
<
?phpnamespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Service\ContainerParametersHelper;
class UserController extends AbstractController{public function index(ContainerParametersHelper $pathHelpers){// Renders in the browser an empty html page with an output like:// "en"return new Response($pathHelpers->
getParameter("en"));
} }
【如何在Symfony 4中使用服务检索项目的根目录和其他容器参数】编码愉快!
推荐阅读
- 如何在Symfony 4中将Twig Extension注册为不带自动接线的服务
- 前端开发人员可以通过这些技巧来帮助避免倦怠
- 如何解决(解决方案)Google的Blockly Future Programmers Game(Bird Level)
- sync-diff数据比对工具
- 一文搞懂linux进程
- docker容器网络配置
- 云原生动态追踪
- Docker-Compose 部署Gitlab
- linux之crontab使用技巧