Symfony的学习

最近又抽时间整理PHP的框架,发现Yii2的文档,尤其是中文化比较多,但是Symfony的文档中文化比较落后,不过也是够用的。

Symfony4,Symfony5现在已经用的挺多的了,但是Symfony应该算是现实意义的PHP标准代码库

里面含有很多组件,都是可以学习和使用的,后面有时间陆续分析一下每个组件的基本思路,之前的TP的整体调用逻辑,我如今看来也是非常有感觉和帮助。主要是官网虽然有,但是没有提及到里面具体的实现,状态。说白了,没有直接联系每一行代码,就让人有距离感

我觉得就框架的调用思路而言,之前的TP的调用流程,应该是通用的。

我还是很喜欢Symfony,尤其是symfony5的快速开发,
涉及到web开发的方方面面,包括不限于配置的类型,路由,HTTP请求的流程,Controller的本质,Doctrine的对象映射,几种常见的数据库mysql,PostgreSQL,sqlite,
Docker-compose的服务编配与配置,git的版本控制,分支开发,测试合并,测试,开发,生产环境的git操作与部署,数据库的迁移和更新,PHP常规的PC端常用的模板引擎,单页面应用的webpack,API的开发。

今天聊一下Doctirne

这是一个对象映射的组件。

它可以实现数据的结构化,给业务逻辑提供数据支撑。有了数据结构,程序就能正常运行。数据的持久化是次要的,这一点我很认同。
虽然它没有更加灵活的model,service但是看看Java的发展,JavaBean,Servlet的组合,我觉得这个Symfony的逻辑思路还是可行的。

Doctrine的第一步是创建实体Entity
第二步是创建实体的关系和联系Relation
第三是创建实体的操作和数据逻辑处理Repository

虽然不太同于model的Entity,但是还是有一些相同之处
(不太方便的就是SQL的表设计范例,关系是放在第三张表的)
还又不太相似Service的Repository

相似的是不仅支持model对象的流式sql写法和DB的sql写法

Doctrine提供了更加规范的DQL和Query Builder.这两个对于熟悉SQL的使用者,应该比较熟悉

比较陌生的就是注解。

建立的php普通的类是和Doctrine没有关系的,只有出现了注解,注解有几种形式,xml,yaml,annotation.
注解就是告诉Doctrine,类是如何与数据库映射的,包括关系,联系和操作,字段,字段属性,表结构

这里面就用到了注解的解析器
use Doctrine\ORM\Mapping as ORM;
就是通过PHP反射API获得注解,然后映射出来所有的元数据信息

通过得到的元数据,生成一列的sql语句
持久化有两种方案:
1.doctrine:schame的一系列命令,可以用于开发环境,不可追溯
2.make:migration

通过这两个就可以生成很多sql,将数据持久化到数据库

关于Doctrine更多的相关组件用法,后续继续

猜你喜欢

转载自blog.51cto.com/10725691/2636929