Symfony DDD Skeleton 项目教程
1. 项目的目录结构及介绍
Symfony DDD Skeleton 项目采用领域驱动设计(DDD)和六边形架构模式,旨在组织和管理多个应用程序。项目的目录结构如下:
├── config/
│ ├── packages/
│ ├── bundles.php
│ └── services.yaml
├── context/
│ ├── admin/
│ │ ├── config/
│ │ │ ├── packages/
│ │ │ ├── bundles.php
│ │ │ ├── routes.yaml
│ │ │ ├── security.yaml
│ │ │ └── services.yaml
│ │ └── src/
│ │ ├── Command/
│ │ └── Controller/
│ ├── api/
│ ├── site/
│ └── Kernel.php
├── src/
│ ├── Module/
│ │ └── SubModule/
│ │ ├── Application/
│ │ ├── Domain/
│ │ └── Infrastructure/
│ ├── Shared/
│ │ ├── Domain/
│ │ ├── Infrastructure/
│ │ └── Presentation/
├── var/
│ ├── cache/
│ │ ├── admin/
│ │ │ ├── dev/
│ │ │ └── prod/
│ │ ├── api/
│ │ └── site/
│ └── logs/
├── public/
│ └── index.php
├── bin/
│ └── console
├── tests/
│ └── context/
│ ├── admin/
│ │ └── AdminWebTestCase.php
│ └── api/
├── .env
├── .gitignore
├── LICENSE
├── README.md
├── composer.json
├── composer.lock
└── symfony.lock
目录结构介绍
- config/: 包含全局配置文件,如
packages/
目录下的包配置文件、bundles.php
和services.yaml
。 - context/: 包含每个应用程序的上下文配置和源代码。每个上下文(如
admin
、api
、site
)都有自己的配置文件和源代码目录。 - src/: 包含应用程序的核心功能,分为模块(Module)和共享(Shared)部分。
- var/: 包含缓存和日志文件。每个上下文都有自己的缓存和日志目录。
- public/: 包含项目的入口文件
index.php
。 - bin/: 包含命令行工具
console
。 - tests/: 包含测试文件,按上下文组织。
- .env: 环境变量配置文件。
- .gitignore: Git 忽略文件配置。
- LICENSE: 项目许可证文件。
- README.md: 项目说明文件。
- composer.json: Composer 依赖管理文件。
- composer.lock: Composer 锁定文件。
- symfony.lock: Symfony 锁定文件。
2. 项目的启动文件介绍
项目的启动文件位于 public/index.php
。该文件是所有请求的入口点,负责初始化 Symfony 应用程序并处理请求。
public/index.php
文件内容
<?php
use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\ErrorHandler\Debug;
use Symfony\Component\HttpFoundation\Request;
require dirname(__DIR__).'/vendor/autoload.php';
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
if ($_SERVER['APP_DEBUG']) {
umask(0000);
Debug::enable();
}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
启动文件功能
- 自动加载: 使用 Composer 自动加载机制加载所有依赖。
- 环境配置: 使用
Dotenv
加载环境变量配置文件.env
。 - 调试模式: 根据环境变量
APP_DEBUG
启用或禁用调试模式。 - 请求处理: 创建 Symfony 内核实例,处理请求并返回响应。
3. 项目的配置文件介绍
项目的配置文件主要位于 config/
和 context/
目录下。以下是主要配置文件的介绍:
全局配置文件
- config/packages/: 包含各个包的配置文件,如
framework.yaml
、doctrine.yaml
等。 - config/bundles.php: 定义项目中启用的 Symfony 包。
- config/services.yaml: 定义全局服务配置。
上下文配置文件
- context/admin/config/: 包含
admin
上下文的配置文件,如routes.yaml
、security.yaml
等。 - context/api/config/: 包含
api
上下文的配置文件。 - context/site/config/: 包含
site
上下文的配置文件。
环境变量配置
- .env: 定义项目的环境变量,如
APP_ENV
、APP_DEBUG
、APP_CONTEXT
等。
配置文件示例
config/packages/framework.yaml
framework:
secret: '%env(APP_SECRET)%'
http_method_override: true
session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
php_errors:
log: true
context/admin/config/routes.yaml
admin_routes:
resource: '../src/Controller/'
type: annotation
.env
APP_ENV=dev
APP_DEBUG=1
APP_SECRET=your_secret_key
APP_CONTEXT=admin
通过这些配置文件,Symfony DDD Skeleton 项目能够灵活地管理多个应用程序,并根据不同的上下文进行配置和运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考