<来自 https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony/vous-avez-dit-symfony>
1 文件结构 L'architecture de fichier
目录列表 Liste des répertoires
app
bin
src
tests
var
vendor
web
/app : 包含所有有关你网站的东西,除了他们的源代码,目的是为了区分。在symfony中,一个网站项目被视作一个application。
/bin : 系统源文件
/src :(主要)放网站源代码的,代码以bundles形式被组织。
/tests:放测试文件的
/vendor : 所有外部库(bibliothèques externes)
/var : log,cache等,系统自动记录的
/web:放目的给访客的文件(image,css,js等),前端控制器le contrôleur frontal (front controller)app.php
或 app_dev.php
. 是访客唯一能访问的目录。
有两个app.php:一个给访客,一个给开发调试。是两个工作环境
Concrètement, que « contrôle » le contrôleur frontal ?
Q:谁控制前端控制器?
A: 它其实是一个进入网站的入口,所以他被视作一个文件。
概念结构 L'architecture conceptuelle
遵循MVC结构(Modèle / Vue / Contrôleur)
Le Contrôleur (ou Controller) : 管理处理访客发出的HTTP请求
Le Modèle (ou Model) : 管理数据和内容。是一个抽象层(C'est une couche d'abstraction.)
La Vue (ou View) : 显示页面
一个请求在symfony中怎么运行:
1. 访客请求页面/platform
;
2. 前端控制器接受请求转交给kernel
3. kernel向路由器(routeur)要求哪个控制器执行这个URL /platform
。routeur是symfony的一个组件,他最后告诉kernel执行控制器OCPlatform:Advert
。
4. kernel执行这个控制器。该控制器向modelAnnonce
要求liste des annoncesListeAnnonces
和la donne à la vue,为了能生成网页。
图片中绿色的是MVC,需要我们开发。橙色的是kernel和routeur,需要我们配置;灰色的不需要动。
BUNDLES
un bundle est une brique de votre application.
在symfony中,一个Bundle是相关功能的程序集合,比如所有有关blog的集合。
bundle社区:http://knpbundles.com
其中几种bundle:
FOSUserBundle :用来管理用户,包含model utilisateur,controller用来实现各种操作(登入,注册,修改用户等),还有view。
等等。。
bundle结构
包含包括MVC结构,class等很多东西,总之是所用与实现bundle功能相关的东西。下面是bundle的目录结构:
/Controller | Contient vos contrôleurs/DependencyInjection | Contient des informations sur votre bundle (chargement automatique de la configuration par exemple)/Entity | Contient vos modèles/Form | Contient vos éventuels formulaires/Resources-- /config | Contient les fichiers de configuration de votre bundle (nous placerons les routes ici, par exemple)-- /public | Contient les fichiers publics de votre bundle : fichiers CSS et JavaScript, images, etc.-- /views | Contient les vues de notre bundle, les templates Twig
总结:
Symfony est organisé en six répertoires :
app
,bin
,src
,var
,vendor
etweb
. 包含六个目录Le répertoire dans lequel on passera le plus de temps est
src
, il contient le code source de notre site. 我们使用最多的是src目录,包含源代码-
Il existe deux environnements de travail : 两种工作环境。
L'environnement « prod » est destiné à vos visiteurs : il est rapide à exécuter, et ne divulgue pas les messages d'erreur. prod给访客
L'environnement « dev » est destiné au développeur, c'est-à-dire vous : il est plus lent, mais offre plein d'informations utiles au développement. dev给开发者
Symfony utilise l'architecture MVC pour bien organiser les différentes parties du code source. 使用MVC结构
Un bundle est une brique de votre application : il contient tout ce qui concerne une fonctionnalité donnée. Cela permet de bien organiser les différentes parties de votre site. bundle是用来实现给定功能的程序块。
Il existe des milliers de bundles développés par la communauté, pensez à vérifier qu'il n'existe pas déjà un bundle qui fait ce que vous souhaitez faire ! 在bundle社区存在很多bundles