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的類緩存機制,你就須要將這兩個語句註釋掉就能夠了。

相關文章
相關標籤/搜索