Symfony學習--目錄和入口


1 目錄結構

根目錄下有:

app

src

vendor

web

app是存放應用的一些配置文件,如果有一些配置文件或者文檔,應當存放在這里面。

src是存放你的項目的php代碼,這里的php至少必須是5.3,因為symfony中使用了命名空間的概念。

vendor是存放第三方代碼的目錄,這個目錄可能非常龐大,因為symfony大量使用了第三方bundle的概念,連自身都是作為一個第三方bundle插件的形式存在。

web是存放web頁面所需要的信息,其中可以包含js,css,html等信息。

2 bundle的概念

symfony的概念就是相當於SOA的概念,每個模塊負責提供一種服務,你的業務需要提供什么服務,就將對應的bundle加載到業務中。

symfony很好的做到了模塊的獨立化,每個模塊就是一個bundle

 

具體的加載方法就在app/AppKernel.php里面,這個類以后用專門一個文章學習吧

3 搭配nginx搭建服務

從目錄中可以知道,將nginx所對應的server的根目錄放在web下

然后將location默認的index指定到web/app.php或者web/app_dev.php下就行了

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

<?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的類緩存機制,你就需要將這兩個語句注釋掉就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM