Symfony学习笔记 - Symfony Documentation - The Basics(3)

4、Session

与php传统的$_SESSION相比较,symfony的session是其加强版本,主要包括:

  1. 支持redis、文件、数据库等的存储方式
  2. CSRF保护、会话固定防护
  3. 原生支持分布式存储
  4. 存取、读取的速度提升
    Symfony Session系统在保持易用性的同时,提供了更强大、更安全的企业级特性,是现代PHP项目的最佳选择。只有在极端受限的环境或维护遗留代码时,才建议继续使用原生$_SESSION。
    在前后端分离的方案中(vue、react等),建议用token来完全替换session。即使在前后端一体的方案里面,也可以同token来替换session。但是,对于​​典型的服务端渲染PHP应用​​,​​Symfony Session是最佳首选​​,因为:
  5. 与Symfony表单系统深度集成
  6. 提供完整的开箱即用安全防护
  7. 开发效率更高,维护成本更低
    仅当满足以下条件时考虑引入Token:
  8. 应用中有大量AJAX交互需求
  9. 明确需要支持移动端接入
  10. 已有明确的向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

  1. 在Symfony的应用中,所有的Error都是作为异常进行处理的。
  2. 在dev环境中,Symfony会catch所有的异常,并显示出来,但在production环境中,则只会显示统一的错误页。
  3. 如果想改变错误页的内容和样式,可以直接修改错误页模板。
  4. 如果想修改非html的内容部分的输出,可以修改normalizer
  5. 如果想修改Symfony生成错误页的逻辑,可以修改error controller
  6. 如果想控制异常处理,运行你自己的kernel.exception event
posted @ 2025-09-09 12:48  繁星灼灼  阅读(7)  评论(0)    收藏  举报