Symfony学习笔记 - Symfony Documentation - Architecture
1、The HttpKernel Component
a. 用httpKernel是 Symfony 灵活性和可扩展性的基础,通过他,可以创建Symfony和Drupal
b. HttpKernel (HTTP内核) 是更高层的协调者,而 Controller (控制器) 是具体的业务逻辑执行者。
2、Kernel
在 Symfony 框架中,HttpKernel 和 Kernel 是两个密切相关但职责不同的核心组件,它们共同构成了 Symfony 的请求处理架构。
1.层级关系:
• Kernel是更高层次的包装器
• HttpKernel是 Kernel内部用于处理 HTTP 请求的核心引擎
2.协作流程:
HTTP请求 → Kernel → HttpKernel → 控制器 → HttpKernel → Kernel → HTTP响应
3、Service Container
Service (服务):应用中可复用的PHP对象,通常执行特定功能(如邮件发送、数据库操作等)
Service Container(服务容器):集中管理所有服务的"容器",负责服务的创建、存储和生命周期管理
DI(依赖注入):一种设计模式,将服务依赖通过构造函数或方法参数自动注入
Bundle():可复用、可拔插的功能包。
三者关系如下:
依赖注入(DI)
↑
Service Container 是实现DI的机制
↑
Services 是被DI管理的对象
Service在Service Container中,进行注册的方式有3种:
1、自动服务注册:在config/Service.yaml中,进行注册。
2、PHP文件注册
3、手工服务注册
4、注释、属性注册
5、Bundle扩展注册
4、Events and Event Listeners
Symfony 的事件系统是其架构中最强大的扩展机制之一,它基于观察者模式实现,允许你在不修改核心代码的情况下改变框架行为。在 Symfony 的事件系统中,event_listener和 event_subscriber是两种不同但互补的事件处理机制,event_listener单个类处理单个事件,event_subscriber单个类可处理多个事件。
在完成Listener和Subscriber的类定义后,需要在service.yaml中,对其进行注册:
services: App\EventListener\ExceptionListener: tags: - { name: kernel.event_listener, event: kernel.exception } ... services: App\EventSubscriber\OrderSubscriber: tags: ['kernel.event_subscriber']
服务容器编译时,收集所有标记为 kernel.event_listener或 kernel.event_subscriber的服务,解析监听器优先级和事件映射关系,生成优化后的缓存数据(生产环境)。在开发环境时,代码发生了变化,会重新编译,但在生产环境,只有在缓存清除后,服务容器才会重新编译。
5、Contracts
Symfony Contracts 是 Symfony 组件中定义的一组标准化接口,它们为框架提供了清晰的抽象层。他可以:
1.开发可替换的服务组件
2.创建框架无关的库
3. 多实现适配器开发
6、Bundle
Bundle类似于一个独立的插件,Symfony由一系列Bundle组成,比如SecurityBundle、FrameworkBundle、DebugBundle等。Buddle中,包括config、asset、src、template、test、route等。

浙公网安备 33010602011771号