Symfony学习--目录和入口

1 目录结构

根目录下有:php

app

src

vendor

web

app是存放应用的一些配置文件,若是有一些配置文件或者文档,应当存放在这里面。css

src是存放你的项目的php代码,这里的php至少必须是5.3,由于symfony中使用了命名空间的概念。html

vendor是存放第三方代码的目录,这个目录可能很是庞大,由于symfony大量使用了第三方bundle的概念,连自身都是做为一个第三方bundle插件的形式存在。nginx

web是存放web页面所须要的信息,其中能够包含js,css,html等信息。web

2 bundle的概念

symfony的概念就是至关于SOA的概念,每一个模块负责提供一种服务,你的业务须要提供什么服务,就将对应的bundle加载到业务中。bootstrap

symfony很好的作到了模块的独立化,每一个模块就是一个bundle缓存

 

具体的加载方法就在app/AppKernel.php里面,这个类之后用专门一个文章学习吧app

3 搭配nginx搭建服务

从目录中能够知道,将nginx所对应的server的根目录放在web下框架

而后将location默认的index指定到web/app.php或者web/app_dev.php下就好了post

4 入口文件app.php的基本框架:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
use Symfony\Component\HttpFoundation\Request;   // 使用Request命名空间
 
$loader = require_once __DIR__. '/../app/bootstrap.php.cache' ;   // bootstrap的自加载文件,包括autoload等
 
require_once __DIR__. '/../app/AppKernel.php' ;   //bundle的加载
 
$kernel = new AppKernel( 'yjf' , true);   // 核心类AppKernel
 
$kernel ->loadClassCache();   // 加载classCache
 
$request = Request::createFromGlobals();  // 获取$_REQUEST
 
$response = $kernel ->handle( $request );   // 处理请求,将request转化为response
 
$response ->send();   // 发送response
 
$kernel ->terminate( $request , $response );  // response的后续操做

这里几个地方看一下:

require_once __DIR__.'/../app/bootstrap.php.cache'; 这个语句是干什么的?

这个文件首先的一个功能是实现autoload机制,其次还有个cache机制。

什么是cache机制呢?

symfony使用了多个第三方类和bundle,而后各个类都分散在各个文件中。若是对每一个请求来讲,在使用的时候将各个文件加载到内存中,那么无疑IO操做很是多。

缓存的机制就是将使用到的类集中在一个文件中,每一个请求只须要加载这个文件,就能够使用所须要的类了。

固然这个文件会是很是大的,你能够在运行以后的app/cache/XXX中看到classes.php文件就是这样。

app.php后面的$kernel->loadClassCache(); 语句就是加载这个缓存类文件使用的。

因此说,若是你不想使用symfony的类缓存机制,你就须要将这两个语句注释掉就能够了。

相关文章
相关标签/搜索