Symfony学习笔记 - Symfony Documentation - The Basics(3)
4、Session
与php传统的$_SESSION相比较,symfony的session是其加强版本,主要包括:
- 支持redis、文件、数据库等的存储方式
- CSRF保护、会话固定防护
- 原生支持分布式存储
- 存取、读取的速度提升
Symfony Session系统在保持易用性的同时,提供了更强大、更安全的企业级特性,是现代PHP项目的最佳选择。只有在极端受限的环境或维护遗留代码时,才建议继续使用原生$_SESSION。
在前后端分离的方案中(vue、react等),建议用token来完全替换session。即使在前后端一体的方案里面,也可以同token来替换session。但是,对于典型的服务端渲染PHP应用,Symfony Session是最佳首选,因为: - 与Symfony表单系统深度集成
- 提供完整的开箱即用安全防护
- 开发效率更高,维护成本更低
仅当满足以下条件时考虑引入Token: - 应用中有大量AJAX交互需求
- 明确需要支持移动端接入
- 已有明确的向SPA迁移的计划
预期用户<1000并发时,可以采取token+symfony session的混合方案,预期用户>10000并发时,采取token方案。
5、Cache
Symfony的cache右三部分组成,pool、adapter、provider:
pool:用户接口部分
provider:cache中,pool和adapter的连接部分,负责对adapter的功能进行管理和扩展
adapter:负责对存储cache的介质进行读、写操作
6、Logging
1、可以直接在Controller、Service中,通过注入的方式,访问默认的logger
public function index(LoggerInterface $logger): Response { $logger->info('I just got the logger');
2. Symfony与PHP社区中,最流行的Monolog无缝集成
3. 可以通过配置日志的handler方式,来指定日志的存储方式
4. 可以通过配置日期的channel的方式,来标记日志的来源,在日志中,可以通过配置的方式,显示channel
7、How to Customize Error Pages
- 在Symfony的应用中,所有的Error都是作为异常进行处理的。
- 在dev环境中,Symfony会catch所有的异常,并显示出来,但在production环境中,则只会显示统一的错误页。
- 如果想改变错误页的内容和样式,可以直接修改错误页模板。
- 如果想修改非html的内容部分的输出,可以修改normalizer
- 如果想修改Symfony生成错误页的逻辑,可以修改error controller
- 如果想控制异常处理,运行你自己的kernel.exception event

浙公网安备 33010602011771号