这个教程是基于symfony5进行编写,以后再出高版本的symfony,那么就可以只出一套针对这个高版本的特性进行编写,该系列教程会一直延续更新。
点赞再看,养成习惯,微信搜索公众号【程序员老班长】关注这个互联网老班长,查看更多系列文章
目录
3,使用ContainerBagInterface访问配置变量
配置文件是symfony程序里面的定义各种环境变量的地方。
1,目录结构:
1 2 3 4 5 6 7 |
your-project/ ├─ config/ │ ├─ packages/ │ ├─ bundles.php │ ├─ routes.yaml │ └─ services.yaml ├─ ... |
routes.yaml
该文件为路由配置文件
services.yaml
该文件是为容器配置服务的文件
bundles.php
该文件是管理容器是否启用第三方包的文件
config/packages
该目录是安装的第三方包的时候,所默认安装的配置文件
2,在控制器中获取配置变量
写的控制器类推荐继承于AbstractController,
这样便可使用getParameter方法获取变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// src/Controller/UserController.php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class UserController extends AbstractController { // ... public function index() { $projectDir = $this->getParameter('kernel.project_dir'); $adminEmail = $this->getParameter('app.admin_email'); // ... } } |
3,使用ContainerBagInterface访问配置变量
在服务中声明这个ContainerBagInterface类型,就可以被容器自动创建实例,后期便可调用这个实例。
namespace App\Service; // ... use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; class MessageGenerator { private $params; public function __construct(ContainerBagInterface $params) { $this->params = $params; } public function someMethod() { // get any container parameter from $this->params, which stores all of them $sender = $this->params->get('mailer_sender'); // ... } }
4,配置文件类型
.env:定义应用程序所需的环境变量的默认值;
.env.local:定义应用程序所需的本地环境变量的值,该文件不提交到代码库中,并且这个文件里面定义的变量会覆盖.env里面的文件。.env.test为测试环境下使用的配置文件。
文章持续更新,可以微信搜索公众号「 程序员老班长 」查看更多文章。