symfony中的事件委派是一个比较经典的设计模式,这个机制对代码的解耦有很大的帮助。理解事件委派的机制有助于对源代码的理解,比如路由的解析就是基于事件委派来实现的。
阅读全文syfmony框架支持多种形式的配置文件 yaml
xml
php array
,理解框架的配置加载解析逻辑有利于对框架源代码的理解。这里可以通过框架对config.yaml 的解析过程进行分析来梳理框架对配置文件的解析逻辑。
路由主要有两部分组成,一部分是路由的匹配过程,一部分是路由表的生成过程,这里通过跟中代码看下路由表的生成过程。
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
。