Aujourd'hui est la dernière étape de notre voyage dans le merveilleux monde de symfony. Au cours de ces vingt-trois jours, vous avez appris symfony par exemple du modèle de design utilisés par le framework vers les puissantes fonctionnalités intégrées. Vous n'êtes pas encore un maître de symfony, mais vous avez toutes les connaissances nécessaires pour commencer à construire vos applications symfony avec confiance.
Comme nous terminons le tutoriel Jobeet, nous allons avoir un autre regard sur le framework. Oubliez Jobeet pendant une heure, et rappelez vous de toutes les fonctionnalités que vous avez apprises au cours des trois dernières semaines.
Qu'est-ce que symfony ?
Le framework symfony est un ensemble cohérent mais découplé en sous-framework, qui forme un Framework MVC full-stack (Modèle, Vue, Contrôleur).
Avant de coder la tête la première, prenez le temps de lire
l'histoire de symfony et la philosophie.
Ensuite, vérifiez les prérequis du framework
et utiliser le script check_configuration.php
pour valider votre configuration.
Finalement, installer symfony. Après quelque temps, vous voulez aussi mettre à jour la dernière version du framework.
Le framework offre également des outils pour faciliter son déploiement.
Le Modèle
La partie du modèle de symfony peut être fait avec l'aide de l'ORM Propel. Selon la description de la base de données, il génère des classes pour les objets, les formulairess et les filtres. Propel génère également les instructions SQL utilisées pour créer les tables dans la base de données.
La configuration de base de données peut être fait avec une tâche ou en modifiant un fichier de configuration. A côté de sa configuration, il est également possible d'injecter des données initiales, grâce aux fichiers fixture. Vous pouvez même rendre ces fichiers dynamiques.
Les objets Propel peuvent aussi facilement être internationalisés.
La Vue
Par défaut, la couche de la vue de l'architecture MVC utilise de simples fichiers PHP comme Templates.
Les Templates peuvent utiliser les helpers pour les tâches récurrentes comme la création d'une URL ou un lien.
Un Template peut être décorée par un layout pour extraire l'entête et le pied des pages. Pour faire des vues encore plus réutilisables, vous pouvez définir des slots, des partials et des components.
Pour accélérer les choses, vous pouvez utiliser le sous-framework de cache pour mettre en cache une page entière, juste l'action, ou même juste des partials ou des components. Vous pouvez également supprimer le cache manuellement.
Le Contrôleur
La partie contrôleur est géré par les contrôleurs frontaux et les actions.
Les tâches peuvent être utilisées pour créer des modules simples, des modules CRUD ou même pour générer des modules admin complétement fonctionnels pour les classes de modèle.
Les modules admin vous permettent de construire une application entièrement fonctionnelle sans rien coder.
Pour faire abstraction de la réalisation technique d'un site web, symfony utilise un sous-framework de routage qui génère des jolies URL. Pour faire l'implémentation encore plus facilement des services web, symfony prend en charge les formats. Vous pouvez également créer vos propres formats.
Une action peut être transmise à une autre ou redirigée.
Configuration
Le framework symfony permet facilement d'avoir différents paramètres de configuration pour différents environnements. Un environnement est un ensemble de paramètres qui permet des comportements différents sur le développement ou les serveurs de production. Vous pouvez également créer de nouveaux environnements.
Les fichiers de configuration de symfony peuvent être définis à différents niveaux et la plupart d'entre eux sont sensibles à l'environnement :
app.yml
cache.yml
databases.yml
factories.yml
generator.yml
routing.yml
schema.yml
security.yml
settings.yml
view.yml
Les fichiers de configuration pour la plupart utilisent le format YAML.
Au lieu d'utiliser la structure de répertoire par défaut et d'organiser vos fichier de l'application par couches, vous pouvez également les organiser par fonctionnalité et pouvoir les regrouper dans un plugin. Comme nous parlons de la structure de répertoire par défaut, vous pouvez aussi la personnaliser selon vos besoins.
Débogage
De la journalisation au web debug toolbar, en passant par les exceptions significatives, symfony dispose de nombreux outils utiles pour aider le développeur à déboguer les problèmes plus rapidement.
Principaux objets de symfony
Le framework symfony fournit assez peu d'objets du noyau qui abstraitent les besoins récurrents dans les projets web : la requête, la réponse, l'utilisateur, la journalisation, le routage et le gestionnaire du cache de la vue.
Ces objets du noyau sont gérées par
l'objet sfContext
, et ils sont configurés
via lesfactories.
Le user gère l'authentification des utilisateurs, l'autorisation, les flashes, et les attributs pour être sérialisés dans la session.
Sécurité
Le framework symfony intègre des protections contre les attaques XSS et CSRF. Ces paramètres peuvent être configurés à partir de la ligne de commande, ou en modifiant un fichier de configuration.
Le framework de formulaire fournit également des fonctionnalités intégrées de sécurité.
Formulaires
Comme la gestion des formulaires est l'une des tâches les plus fastidieuses pour un développeur web, symfony fournit un sous-framework de formulaire. Le framework de formulaire est livré avec un lot de widgets et de validateurs. L'un des atouts du sous-framework de formulaire est que les Templates sont très facilement personnalisables.
Si vous utilisez Propel, le framework de formulaire permet également de générer des formulaires et des filtres basés depuis vos modèles.
Internationalisation et régionalisation
L'internationalisation et la régionalisation sont supportés par symfony, grâce à la norme ICU. La culture de l'utilisateur détermine la langue et le pays de l'utilisateur. Elle peut être définie par l'utilisateur lui-même, ou incorporée dans l'URL.
Tests
La bibliothèque lime, utilisée pour les tests unitaires, fournit un grand nombre de méthodes de test. Les objets Propel peuvent aussi être testés à partir d'une base de données dédiée et avec des jeux de test dédiés.
Les tests unitaires peuvent être exécutés un par un ou tous ensembles.
Les tests fonctionnels sont écrit avec la classe
sfFunctionalTest
, qui utilise un
simulateur de navigateur et permet
l'introspection des objets du noyau de symfony grâce aux
testeurs. Les testeurs existent pour
l'objet de la requête,
l'objet de la réponse,
l'objet utilisateur,
l'objet du formulaire actuel, la
couche du cache et les
objets Propel.
Vous pouvez également utiliser les outils de débogage pour la réponse et les formulaires.
Comme pour les tests unitaires, les tests fonctionnels peuvent être exécutés un par un ou tous ensembles.
Vous pouvez également exécuter tous les tests ensembles.
Plugins
Le framework symfony fournit seulement la fondation de vos applications web et
s'appuie sur des plugins pour ajouter plus de
fonctionnalités. Dans ce tutoriel, nous avons parlé sfGuardPlugin
,
sfFormExtraPlugin
et
sfTaskExtraPlugin
.
Un plugin doit être activé après l'installation.
Le plugin est le meilleur moyen de contribuer en retour au projet symfony.
Tâches
Le CLI de symfony fournit une foule de tâches, et les plus utiles ont été expliquées dans ce tutoriel :
app:routes
cache:clear
configure:database
generate:project
generate:app
generate:module
help
i18n:extract
list
plugin:install
plugin:publish-assets
project:deploy
propel:build-all
propel:build-all-load
propel:build-forms
propel:build-model
propel:build-sql
propel:data-load
propel:generate-admin
propel:generate-module
propel:insert-sql
test:all
test:coverage
test:functional
test:unit
Vous pouvez également créer vos propres tâches.
À bientôt
Avant de vous quitter, je voudrais parler d'une dernière chose à propos de symfony. Le framework a beaucoup de fonctionnalités intéressantes et beaucoup de documentation gratuite. Mais, l'un des actifs les plus précieux d'un Open-Source est d'avoir sa communauté. Et symfony a l'une des communautés la plus étonnante et active. Si vous commencez à utiliser symfony pour vos projets, envisager de rejoindre la communauté symfony :
- Abonnez-vous à la mailing-list des utilisateurs
- Abonnez-vous au flux du blog officiel
- Abonnez-vous au flux planète de symfony
- Venez et chattez sur le canal IRC #symfony de freenode
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.