文档章节

Symfony启动顺序

ForeverGlory
 ForeverGlory
发布于 2016/06/21 15:33
字数 215
阅读 64
收藏 1

Kernel->initializeBundles() 初始化Bundle
    Kernel->registerBundle() 注册Bundle
    Kernel->bundleMap 生成Bundle关系图
    
Kernel->initializeContainer()  初始化容器(缓存)
    Kernel->buildContainer()  建立容器
        Kernel->prepareContainer()  预备容器
            Bundle->getContainerExtension()  获取Bundle扩展
            Bundle->build($container) 编译Bundle
                Symfony\Bundle\FrameworkBundle->build($container) 添加了不少 CompilerPassInterface (路由、事件、模板、资源等)
            ContainerBuilder-> … ->setMergePass(new MergeExtensionConfigurationPass($extensions))  设置MergePass(CompilerPassInterface),用于合并Bundle扩展配置
        Kernel->registerContainerConfiguration(LoaderInterface $loader)  获取配置、服务
    ContainerBundler->compile() 编译容器
        $compiler->compile($this);  
            开始执行 $container->addCompilerPass() 里面的 CompilerPassInterface ,(包括 FrameworkBundle->build($container) 里添加的)
            默认从 MergeExtensionConfigurationPass 开始
                MergeExtensionConfigurationPass->process($container)
                    process 包含
                        BundleExtension->prepend($container);       // 必须实现 PrependExtensionInterface 接口才执行该方法
                        BundleExtension->load($config, $container)
            
            所有 CompilerPassInterface 依次 ->process()
            foreach ($this->passConfig->getPasses() as $pass) {
                    $pass->process($container);
            }
            

foreach(Kernel->getBundles() as $bundle){
    Bundle->boot() 启动
}

$reqponse = Kernel->handle() 处理
    Container->get('http_kernel')->handle($request)

$response->send();

$kernel->terminate($request, $response)

 

后续更新 CompilerPassInterface 详细顺序

© 著作权归作者所有

上一篇: Symfony Service 详解
下一篇: doctrine 事件
ForeverGlory
粉丝 3
博文 6
码字总数 1017
作品 0
闸北
技术主管
私信 提问
结合MongoDB开发LBS应用

简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。我所在的项目也正从事相关系统的...

凯文加内特
2015/09/09
361
0
Symfony 4.1.3 和 4.0.14 等全系列发布,PHP Web 框架

日前,Symfony 为全部的分支进行了更新,包括 v4.1.3、v4.0.14 、v3.4.14 、v3.3.18 、v2.8.44 和 v2.7.49。 发布说明显示,每个版本都包含重要的变化,内容较多,详情请点击下面链接进行查看...

局长
2018/08/03
749
0
Symfony 4.1.8 和 3.4.19 等系列发布,PHP Web 框架

日前,Symfony 为多个分支进行了更新,包括 4.2.0-RC1, 4.1.8, 3.4.19 和 2.8.48。 发布说明显示,每个版本都包含重要的变化,内容较多,详情请点击下面链接进行查看: Symfony 4.2.0-RC1 ht...

局长
2018/11/27
463
0
Symfony 4.2.3 和 3.4.22 发布,经典的 PHP Web 框架

日前,Symfony 为多个分支进行了更新,包括 4.2.3 和 3.4.22 Symfony 4.2.3:https://symfony.com/blog/symfony-4-2-3-released Symfony 3.4.22:https://symfony.com/blog/symfony-3-4-22-r......

程六金
02/04
402
0
Symfony 4.2.2、4.1.10 和 3.4.21 发布,经典的 PHP Web 框架

日前,Symfony 为多个分支进行了更新,包括 4.2.2,4.1.10 和 3.4.21 。 Symfony 4.2.2:https://symfony.com/blog/symfony-4-2-2-released Symfony 4.1.10:https://symfony.com/blog/symf......

程六金
01/07
794
1

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
28分钟前
3
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
45分钟前
89
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
55分钟前
4
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
57分钟前
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部