start-workflow.md 6.05 KB
Newer Older
Benoît committed
1
Fonctionnement des applications
Benoît committed
2 3 4
===============================

Après avoir installé Yii, vous obtenez une application Yii fonctionnelle accessible via l'URL `http://hostname/basic/web/index.php` ou `http://hostname/index.php`, en fonction
MarsuBoss committed
5
de votre configuration. Cette section vous initiera aux fonctionnalités intégrées à l'application,
Benoît committed
6 7 8 9 10 11 12 13
à la manière dont le code est organisé, et à la gestion des requêtes par l'application.

> Info: Par simplicité, au long de ce tutoriel de démarrage, nous supposerons que `basic/web` est la racine de votre 
  serveur Web, et que vous avez configuré l'URL pour accéder à votre application comme suit ou similaire : 
  `http://hostname/index.php`.
  Pour vos besoins, merci d'ajuster les URLs dans notre description comme il convient.


MarsuBoss committed
14 15
Fonctionnalité <a name="Functionality"></a>
--------------
Benoît committed
16 17 18 19 20 21

L'application basique installée contient quatre pages :

* La page d'accueil, affichée quand vous accédez à l'URL `http://hostname/index.php`,
* la page "About" (A Propos),
* la page "Contact", qui présente un formulaire de contact permettant aux utilisateurs finaux de vous contacter par email,
MarsuBoss committed
22
* et la page "Login" (Connexion), qui présente un formulaire de connexion qui peut être utilisé pour authentifier des utilisateurs finaux. Essayez de vous connecter
Benoît committed
23 24 25 26 27 28
  avec "admin/admin", et vous verrez l'élément "Login" du menu principal être remplacé par "Logout" (Déconnexion).

Ces pages ont en commun une entête et un pied de page. L'entête contient une barre de menu principal qui permet la navigation
entre les différentes pages.

Vous devriez également voir une barre d'outils en bas de votre fenêtre de navigation.
MarsuBoss committed
29
C'est un [outil de débogage](tool-debugger.md) utile fourni par Yii pour enregistrer et afficher de nombreuses informations de débogage, telles que des messages de logs, statuts de réponses, les requêtes lancées vers la base de données, et ainsi de suite.
Benoît committed
30 31 32 33 34 35 36 37 38 39 40 41 42 43


Structure de l'Application <a name="application-structure"></a>
---------------------

Les répertoires et fichiers les plus importants de votre application sont (en supposant que le répertoire racine de l'application est `basic`) :

```
basic/                  chemin de base de l'application
    composer.json       utilisé par Composer, décrit les information de paquets
    config/             contient les configurations de l'application et autres
        console.php     configuration de l'application console
        web.php         configuration de l'application Web
    commands/           contient les classes de commandes console
MarsuBoss committed
44
    controllers/        contient les classes de contrôleurs
Benoît committed
45 46 47 48 49 50
    models/             contient les classes de modèles
    runtime/            contient les fichiers générés par Yii au cours de l'exécution, tels que les fichiers de logs ou de cache and cache
    vendor/             contient les paquets Composer installés, y compris le framework Yii
    views/              contient les fichiers de vues
    web/                racine Web de l'application, contient les fichiers accessibles via le Web
        assets/         contient les fichiers assets (javascript et css) publiés par Yii
Benoît committed
51
        index.php       le script de démarrage (ou bootstrap) pour l'application
Benoît committed
52 53 54
    yii                 le script d'exécution de Yii en commande console
```

Benoît committed
55
Dans l'ensemble, les fichiers de l'application peuvent être séparés en deux types : ceux situés dans `basic/web` et ceux situés dans d'autres répertoires. Les premiers peuvent être atteints directement en HTTP (c'est à dire dans un navigateur), tandis que les seconds doivent pas l'être.
Benoît committed
56

Benoît committed
57
Yii est implémenté selon le patron de conception [modèle-vue-contrôleur (MVC)](http://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-contr%C3%B4leur),
Benoît committed
58 59
ce qui se reflète dans l'organisation des répertoires ci-dessus. Le répertoire `models` contient toutes les [classes modèles](structure-models.md),
le répertoire `views` contient tous les  [scripts de vue](structure-views.md), et le répertoire `controllers` contient toutes les [classes contrôleurs](structure-controllers.md).
Benoît committed
60

Benoît committed
61
Le schéma suivant présente la structure statique d'une application.
Benoît committed
62

Benoît committed
63
![Structure Statique d'Application](images/application-structure.png)
Benoît committed
64

Benoît committed
65 66
Chaque application a un script de démarrage `web/index.php` qui est le seul script PHP de l'application accessible depuis le Web.
Le script de démarrage reçoit une requête et créé une instance d'[application](structure-applications.md) pour la traiter.
MarsuBoss committed
67
L'[application](structure-applications.md) résout la requête avec l'aide de ses [composants](concept-components.md),
Benoît committed
68 69
et distribue la requête aux éléments MVC. Les [Widgets](structure-widgets.md) sont utilisés dans les  [vues](structure-views.md)
pour aider à créer des éléments d'interface complexes et dynamiques.
Benoît committed
70 71


Benoît committed
72
Cycle de vie d'une requête <a name="request-lifecycle"></a>
Benoît committed
73 74
-----------------

Benoît committed
75 76
Le diagramme suivant présente la manière dont une application traite une requête.

77
![Cycle de Vie d'une Requête](images/request-lifecycle.png)
Benoît committed
78

Benoît committed
79 80
1. Un utilisateur fait une requête au [script de démarrage](structure-entry-scripts.md) `web/index.php`.
2. Le script de démarrage charge la [configuration](concept-configurations.md) de l'application et créé une instance d'[application](structure-applications.md) pour traiter la requête.
MarsuBoss committed
81
3. L'application résout la [route](runtime-routing.md) requise avec l'aide du composant d'application [requête](runtime-requests.md).
Benoît committed
82 83
4. L'application créé une instance de [contrôleur](structure-controllers.md) pour traiter la requête.
5. Le contrôleur créé une instance d'[action](structure-controllers.md)  et effectue les filtres pour l'action.
MarsuBoss committed
84
6. Si un filtre échoue, l'action est annulée.
Benoît committed
85
7. Si tous les filtres sont validés, l'action est exécutée.
MarsuBoss committed
86
8. L'action charge un modèle de données, potentiellement depuis une base de données.
Benoît committed
87
9. L'action génère une vue, lui fournissant le modèle de données.
Benoît committed
88
10. Le résultat généré est renvoyé au composant d'application [réponse](runtime-responses.md).
Benoît committed
89
11. Le composant réponse envoie le résultat généré au navigateur de l'utilisateur.