站在巨人的肩膀上 使用Symfony框架开发你的下一个项目 洪涛@PHPCON2017

2020-03-01 326浏览

  • 1.站在巨⼈人的肩膀上 — 使⽤用Symfony开发你的下⼀一个项⽬目 洪涛 PHPCon2017
  • 2.个⼈人简介 洪涛,现任携⻋车⽹网 CTO,喜好技术研究和分享, 曾受邀参加多个技术⼤大会并担任讲师。 从2009年年开始接触Symfony,多次完整经历了了使 ⽤用Symfony开发的项⽬目,积累了了⼤大量量相关经验,曾在 慕课⽹网制作了了《洪⼤大师带你解读Symfony2框架》系列列 视频课程。 最近关注的领域是产品和技术的深度结合,以及 如何⽤用技术推动公司业务发展。
  • 3.问:请问如何评价Symfony这个框架? 答:『优点:强⼤大。缺点:太强⼤大』 — 来⾃自某知乎⽹网友
  • 4.1. Symfony是什什么? 2. Symfony的⼀一些特性和功能介绍 3. 如何开始使⽤用Symfony 4. 我使⽤用 Symfony 8年年来的⼀一些感悟和理理解
  • 5.1. Symfony是什什么
  • 6.Symfony • Github上最活跃的PHP项⽬目之⼀一 • ⼤大量量来⾃自官⽅方和开源社区的⽀支持 • ⼤大量量成熟的功能插件 • 以此构建并衍⽣生出的⽣生态环境已经影响了了整个PHP 开发圈
  • 7.Symfony的版本 • Symfony 1.x • • 05年年发布,12年年停⽌止维护 Symfony 2.x~3.x~4.x • 11年年发布 • 最新LTS版本2.8 • ⾮非LTS版本3.2
  • 8.2. 特性和功能介绍
  • 9.如何做CRUD?
  • 10.只要三步? 1. 定义类 2. 写⼏几个基本的⽅方法 3. 执⾏行行⼏几个命令
  • 11.定义Entity
  • 12.定义AdminClass
  • 13.
  • 14.
  • 15.零代码实现复杂表关系的CRUDSonataAdminBundle:ModelTypeList
  • 16.为什什么能做到? 数据库 PHP代码 ⽤用户操作 前端⻚页⾯面 DoctrineBundle BooleanType SonataCoreBundle BooleanType
  • 17.数据库ORM - Doctrine
  • 18.使⽤用ORM操作数据库 更更新 新增 删除
  • 19.⾃自动获取关联表的数据 • 当执⾏行行第⼆二句句时,Doctrine会⾃自动帮我们⽣生成⼀一个 包含join的sql语句句并运⾏行行,然后把city表⾥里里的name 字段返回给我们
  • 20.• 原⽣生SQL • ⾯面向对象的类操作 • Doctrine Query Language
  • 21.Doctrine很慢吗? • Doctrine能把数据库操作进⾏行行预处理理和合并: persist():把操作”暂存”起来 flush():把各种操作进⾏行行合并计算,得到结果后⼀一 并在数据库⾥里里操作并commit • Doctrine能把对数据库的操作规范并统⼀一,⽅方便便集 中优化SQL语句句和表结构
  • 22.Annotation
  • 23.
  • 24.• • • 路路由,该⽅方法可以通过/get_city_by_location访问到 访问类型,限制了了只能通过GET访问 定义了了API参数,能够⽣生成API调试⻚页⾯面 对于Controller Annotation还可以实现: 定义Cache、定义访问权限、HTTP参数的预处理理……
  • 25.⼀一般情况下,Controller⾥里里,真正 业务逻辑所占的⽐比例例
  • 26.使⽤用Annotation后,可以将业务逻 辑和其他代码进⾏行行分离,实现解耦
  • 27.快速进⾏行行接⼝口开发
  • 28.使⽤用Annotation快速定义 API接⼝口⽂文档
  • 29.⾃自动⽣生成接⼝口⽂文档和调试⻚页⾯面 接⼝口列列表 接⼝口详情⻚页(⽀支持在线调试)
  • 30.IoC / DI / Service
  • 31.举个例例⼦子:发送邮件 Controller:负责调⽤用发送邮件的Service Mail Service:负责实现具体如何发送邮件
  • 32.使⽤用Service的优势 • • • • 在整个程序执⾏行行上下⽂文环境中,不不管调⽤用Service多少次,实例例化 的对象都可以是同⼀一个,Symfony的Service管理理器器会为你管理理所 有Service对象 Service具有Lazy-loaded特性,可以在你调⽤用的时候再进⾏行行初始 化 在程序的任何⻆角落都可以调⽤用Service(模板,Action,其他的 Service,各种监听事件……) Service是优秀和先进的软件架构,帮助你管理理复杂的业务逻辑和 系统功能逻辑。可以让你以最⼩小的代价响应业务逻辑的迅速变化
  • 33.性能
  • 34.这么多『花⾥里里胡哨』的功能, Symfony性能会很差吗? • • • • 100%兼容HHVM ⽀支持多环境(dev/test/staging/prod/……),每个 环境都可以⾃自⾏行行配置 Lazy-loaded:使你的程序只加载它⽤用得到的代码 强⼤大的代码预处理理功能:Annotation/Twig模板/ Service等
  • 35.Symfony Proxy with Varnish — RPS性能提升百倍的利利器器
  • 36.
  • 37.Browser Symfony Proxy Web Server GET /esi:include