路由主要有两部分组成,一部分是路由的匹配过程,一部分是路由表的生成过程,这里通过跟中代码看下路由表的生成过程。
symfony中的路由是通过 标注(annotation)的形式进行定义的,symfony是通过配置文件进行查找进行路由的解析,最终将路由存储到缓存文件 var/cache/prod/appProdProjectContainerUrlMatcher.php 中。

阅读全文

symfony 的容器是有一个编译过程的,框架初始化的时候会执行 Symfony\Component\HttpKernel\Kernel::initializationContainer,这个方法会对代码进行检查,看是否需要生成新的容器代码。如果需要 Symfony 会将各个类的依赖关系通过编译生成静态的类并存储在缓存文件var/cache/[ENV]/appProjectContainer中。

其中很多是框架自己的依赖关系,这些依赖关系类似java的方式,通过xml文件的形式进行声明,这些xml存在与框架的代码中,Syfmony\Bundle\FrameworkBundle\Resource\config\*.xml

阅读全文

这是基于 symfony3.3.0版本的源代码分析,主要包含以下部分:

  1. 框架主流程
  2. 容器生成及使用
  3. 路由生成
  4. 配置文件加载
  5. 事件委派

在对源代码进行分析的时候,使用phpstrom配合xdebug扩展进行断点调试,对代码分析以及梳理起到了很大的帮助。phpstrom断点的配置可以参考 这里

阅读全文

xdebug的断点原理就是,通过php的xdebug对php运行的变量文件等信息进行监听,并通过9000端口以及DBGp协议,将这些信息发送给客户端PHPStrom。
PHPStrom 作为IDE对自己内部设置的断点以及接收到的数据进行安排显示,并再次通过9000端口,做出响应到服务端的xdebug。

阅读全文

php并发控制

发布在 技术笔记

这两天遇到一个常见的并发控制的问题,类似抢票问题,当剩下一张票的时候 两个人同时抢这张票 可能会出现多卖的情况

阅读全文

使用apidoc 可以通过分析代码中的注释生成文档,由于apidoc生成的文档是一个单文件
多人开发过程中会导致文件的覆盖,可以通过git 代码分支合并的时候通过钩子(web hook)生成文档到文档服务器
文档服务器通过samba 服务 实现代码服务器将生成的文档写入文档服务器。由于是静态文件可以使用node 来跑
这样避免多项目的时候 需要在文档服务器绑定不同的域名来实现单台文档服务器跑多个项目的接口文档的麻烦

阅读全文
作者的图片

fantiq

author.bio


author.job


China HangZhou