Au cours de cette session, nous présenterons d'une manière générale toutes les caractéristiques qui font de symfony un framework open source tourné vers le monde professionnel.
Il s'agira dans un premier temps de montrer que symfony n'est pas seulement une base de code mais un projet open source à part entière disposant d'un écosystème riche sur lequel n'importe quel développeur peut compter.
Nous porterons ensuite un oeil plus attentif aux fonctionnalités phares du framework telles que sa couche d'abstraction de base de données, son interface en ligne de commande, le routing bidirectionnel, les outils de test automatisés ou bien encore le générateur automatique de backoffice.
Premier chapitre d'une formation Symfony 2,
l'Objectif de ce chapitre peut se résumer dans les points suivants :
- Présentation du framework Symfony en sa version 2.x
- Première installation de Symfony, et découvert de son arborescence projet
- Notion des Bundles : Notion de contrôleur et Vue + Réalisation d'un premier contrôleur
- Système des Routes : utilisation des annotations pour définir des routes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
Retour d'expériences sur tout le processus d'ingénierie logicielle de projets Symfony que nous avons construits au fil du temps depuis nos premiers projets en 2006. Nous aborderons toutes les phases de l'industrialisation nous ayant permis d'accroître la qualité et la réactivité d’intervention sur les projets
Deuxième chapitre d'une formation Symfony 2,
l'Objectif de ce chapitre peut se résumer dans les points suivants :
- Présentation du moteur de template Twig
- Syntaxe et utilisation du moteur de template Twig dans les vues des contrôleurs
- Passer des variables depuis les contrôleurs vers les vues
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
Avec cette nouvelle version de votre framework préféré, de nouvelles fonctionnalités et de nouveaux usages sont apparus. Vous vous demandez comment structurer vos bundles? Comment organiser votre code source? Comment utiliser correctement l'injecteur de dépendance? Venez découvrir au cours de cette session les bonnes pratiques, et quelques astuces, qui vous aiderons dans la réalisation de vos projets avec Symfony2.
Cette présentation à pour but d'expliquer à des néophites les avantages du framework PHP Symfony.
Elle m'a servit en entreprise pour expliquer ses concepts complexe à des non-informaticiens.
Cette présentation à pour but d'expliquer à des néophites les avantages du framework PHP Symfony.
Elle m'a servit en entreprise pour expliquer ses concepts complexe à des non-informaticiens.
Premier chapitre d'une formation Symfony 2,
l'Objectif de ce chapitre peut se résumer dans les points suivants :
- Présentation du framework Symfony en sa version 2.x
- Première installation de Symfony, et découvert de son arborescence projet
- Notion des Bundles : Notion de contrôleur et Vue + Réalisation d'un premier contrôleur
- Système des Routes : utilisation des annotations pour définir des routes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
Retour d'expériences sur tout le processus d'ingénierie logicielle de projets Symfony que nous avons construits au fil du temps depuis nos premiers projets en 2006. Nous aborderons toutes les phases de l'industrialisation nous ayant permis d'accroître la qualité et la réactivité d’intervention sur les projets
Deuxième chapitre d'une formation Symfony 2,
l'Objectif de ce chapitre peut se résumer dans les points suivants :
- Présentation du moteur de template Twig
- Syntaxe et utilisation du moteur de template Twig dans les vues des contrôleurs
- Passer des variables depuis les contrôleurs vers les vues
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
Avec cette nouvelle version de votre framework préféré, de nouvelles fonctionnalités et de nouveaux usages sont apparus. Vous vous demandez comment structurer vos bundles? Comment organiser votre code source? Comment utiliser correctement l'injecteur de dépendance? Venez découvrir au cours de cette session les bonnes pratiques, et quelques astuces, qui vous aiderons dans la réalisation de vos projets avec Symfony2.
Cette présentation à pour but d'expliquer à des néophites les avantages du framework PHP Symfony.
Elle m'a servit en entreprise pour expliquer ses concepts complexe à des non-informaticiens.
Cette présentation à pour but d'expliquer à des néophites les avantages du framework PHP Symfony.
Elle m'a servit en entreprise pour expliquer ses concepts complexe à des non-informaticiens.
Cette nouvelle version du framework a été entièrement réécrite afin de tirer profit de PHP 5.3 d'une part mais également de corriger les erreurs du passé avec symfony 1.x.
Cette nouvelle version regorge de fonctionnalités puissantes pour vous aider à bâtir des applications web maintenables, pérennes, performantes et évolutives.
Cette présentation donne un aperçu des nouvelles fonctionnalités de Symfony2 comme l'architecture MVC, les tests automatisés ou bien encore l'envoi d'emails.
Symfony est le framework le plus répandu pour les dévéloppeurs PHP,pour ce fait je vais vous montrer comment développer les applications web (Backend) ultra-rapides et savoir quand et comment choisir un outil
Symfony2 est un framework PHP pour le développement de sites web. Cette présentation fournit -entre autre- quelques exemples pour commencer à manipuler les concepts et les commandes de base du framework.
Elle a été présenté à l'occasion d'un code d'armor sur le sujet (Mardi 19 novembre 2013 de 19:00 à 21:30).
Par Eric PARA & Sylvain RAGOT.
Cette formation a pour objectif de faire acquérir aux stagiaires les connaissances des mécanismes de base du framework PHP Symfony2 avec l'ORM Doctrine 2 et de mettre en pratique ces connaissances.
Le parcours pédagogique se présente sous la forme d'un projet d'application internet "Knoodle" réalisé par chaque stagiaire : des travaux pratiques auront lieu tout au long de la formation.
Vous pourrez ainsi profiter de multiples conseils et recommandations tirés de la (grande) expérience du formateur sur Symfony.
wallabag est une application opensource de lecture différée : elle vous permet de mettre de côté la version épurée d'un article pour la consulter plus tard où que vous soyez. Créée il y a 3 ans à base de fichiers PHP comme on faisait en 2005, nous avons décidé il y a maintenant un peu plus d'un an de migrer le projet à Symfony. Au cours de ce talk, nous présenterons donc le projet wallabag et tout son écosystème : son concept, son socle technique (API REST, tests unitaires, Rulerz, RabbitMQ, Capistrano), les difficultés rencontrées, la communauté et les projets qui tournent autour, la roadmap pour les semaines à venir.
PHP Composer : Pourquoi ? Comment ? Et plus ...Romain Cambien
Présentation de la gestion de dépendance grâce à Composer. Comment l'installer et le principales commandes à connaitre. Présentation et demonstration du projet Toran Proxy.
Trois avancées majeures en CSS3 : Mediaqueries, Grid Layout et Animations (MS...Raphaël Goetter
Parmi l'ensemble des nouveautés apportés par CSS3, arrêtons-nous un instant sur trois modules qui feront sans nul doute parler beaucoup à l'avenir : les Media Queries et le Web mobile, le nouveau positionnement fluide sous forme de grilles et les animations d'éléments.
Découvrons ce qui se cache sous le capot de ces technologies et voyons ce qu'elles peuvent apporter sur des navigateurs récents tels qu'Internet Explorer 9 et 10.
Cette nouvelle version du framework a été entièrement réécrite afin de tirer profit de PHP 5.3 d'une part mais également de corriger les erreurs du passé avec symfony 1.x.
Cette nouvelle version regorge de fonctionnalités puissantes pour vous aider à bâtir des applications web maintenables, pérennes, performantes et évolutives.
Cette présentation donne un aperçu des nouvelles fonctionnalités de Symfony2 comme l'architecture MVC, les tests automatisés ou bien encore l'envoi d'emails.
Symfony est le framework le plus répandu pour les dévéloppeurs PHP,pour ce fait je vais vous montrer comment développer les applications web (Backend) ultra-rapides et savoir quand et comment choisir un outil
Symfony2 est un framework PHP pour le développement de sites web. Cette présentation fournit -entre autre- quelques exemples pour commencer à manipuler les concepts et les commandes de base du framework.
Elle a été présenté à l'occasion d'un code d'armor sur le sujet (Mardi 19 novembre 2013 de 19:00 à 21:30).
Par Eric PARA & Sylvain RAGOT.
Cette formation a pour objectif de faire acquérir aux stagiaires les connaissances des mécanismes de base du framework PHP Symfony2 avec l'ORM Doctrine 2 et de mettre en pratique ces connaissances.
Le parcours pédagogique se présente sous la forme d'un projet d'application internet "Knoodle" réalisé par chaque stagiaire : des travaux pratiques auront lieu tout au long de la formation.
Vous pourrez ainsi profiter de multiples conseils et recommandations tirés de la (grande) expérience du formateur sur Symfony.
wallabag est une application opensource de lecture différée : elle vous permet de mettre de côté la version épurée d'un article pour la consulter plus tard où que vous soyez. Créée il y a 3 ans à base de fichiers PHP comme on faisait en 2005, nous avons décidé il y a maintenant un peu plus d'un an de migrer le projet à Symfony. Au cours de ce talk, nous présenterons donc le projet wallabag et tout son écosystème : son concept, son socle technique (API REST, tests unitaires, Rulerz, RabbitMQ, Capistrano), les difficultés rencontrées, la communauté et les projets qui tournent autour, la roadmap pour les semaines à venir.
PHP Composer : Pourquoi ? Comment ? Et plus ...Romain Cambien
Présentation de la gestion de dépendance grâce à Composer. Comment l'installer et le principales commandes à connaitre. Présentation et demonstration du projet Toran Proxy.
Trois avancées majeures en CSS3 : Mediaqueries, Grid Layout et Animations (MS...Raphaël Goetter
Parmi l'ensemble des nouveautés apportés par CSS3, arrêtons-nous un instant sur trois modules qui feront sans nul doute parler beaucoup à l'avenir : les Media Queries et le Web mobile, le nouveau positionnement fluide sous forme de grilles et les animations d'éléments.
Découvrons ce qui se cache sous le capot de ces technologies et voyons ce qu'elles peuvent apporter sur des navigateurs récents tels qu'Internet Explorer 9 et 10.
Cours de PHP/MySQL pour l'IEF (Institut Européen de Formation)
Première partie des cours de développement PHP :
- Environnement de développement
- Hello world !
- Syntaxe PHP
- PHP et HTML
- Instructions PHP
- Les variables
- Déclaration des variables
- Variables locales
- Variables globales
- Tester l'existence d'une variable
- Détruire une variable
- Variables dynamiques
- Constantes
- Types de données
- Trouver le type d'une variable
- Booléens (Boolean)
- Entiers (Integer)
- Nombres flottants (Float)
- Chaînes de caractères (String)
- Les Cast
- Conversion de valeurs
- Opérateurs
- Opérateurs d'affectation
- Opérateurs d'arithmétiques
- Incrémentation/Décrémentation
- Opérateurs combinés
- Concaténation
- Opérateurs de comparaison
- Opérateurs logiques
- Priorités des opérateurs
- Conditions (if et switch)
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
Monitor the quality of your Symfony projectsHugo Hamon
Ensuring an application source code quality is not an easy task. This is especially true with the PHP language, which is still compared to a non-professional programming language nowadays. In fact, the PHP language has plenty of professional tools for monitoring the quality of PHP projects. These tools are also standard enough to be coupled and to communicate with other professional tools in Java for example. In this session, we will introduce some of the Symfony2 best practices to adopt to write clean and maintainable code. Then, we will look at the best PHP quality tools to setup to monitor a Symfony2 project on a day-to-day development. The conference will especially focus on the Jenkins continuous integration platform, automated tests (unit and functional testing) and how to get and interpret metrics on the code.
API First talk from Gluecon '14, talking about putting the API behind all of your products and having a single stack. Presenter notes are included and probably necessary for when you don't have my interpretive dance to watch.
This workshop was designed to help people understand what APIs are in the current world, how to plan and build them, and how to avoid common pitfalls.
For more information on this topic see http://apicodex.3scale.net/content/API101
Paradoxalement, Symfony2 n'est pas qu'un framework "full-stack". Il s'agit avant tout d'une parfaite synergie de briques logicielles autonomes qui travaillent de concert sous la baguette d'un seul chef d'orchestre : le conteneur d'injection de dépendances. Mais savez-vous que vous pouvez aussi les utiliser sans le framework ? Tous ces composants indépendants sont distribués sous licence MIT et offrent aux développeurs la liberté de les utiliser dans leurs projets PHP. Au cours de cette session, nous mettrons en lumière les fonctionnalités offertes par les principaux composants de Symfony2 tels que DependencyInjection, Console, Finder, EventDispatcher, Translation et bien d'autres encore. Vous découvrirez comment les intégrer et les utiliser dans vos projets PHP, et ainsi devenir le prochain Maestro du web.
This stuff is cool, but...HOW CAN I GET MY COMPANY TO DO IT?Mark Heckler
We go to conferences & get excited about things that could revolutionize our development & change our organization! Then, we go home...and hit the wall. If you've ever asked yourself, "This stuff is cool, but HOW CAN I GET MY COMPANY TO DO IT??!", this is the session for you.
Learn from an experienced software developer (who also happens to have an MBA) how to make your case to leadership.
Persistence is one of the most important part in a PHP project. Persisting data to a database came with PHP/FI and its MySQL support. From native extensions and PHP4 database abstraction libraries to PDO and modern ORM frameworks, you will (re)discover how persistence has evolved during the last decade. This talk will also introduce the future of data persistence with the growing success of alternative storage engines.
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsVladyslav Riabchenko
SOLID est un acronyme représentant cinq principes de bases de la programmation orientée objet permettant le développement de logiciels fiables, évolutifs et robustes. Le framework Symfony est un excellent support pour illustrer chacun de ces principes. Nous verrons ainsi que SOLID est à l’origine de sa flexibilité, sa fiabilité mais aussi de sa maintenabilité et son évolutivité. Nous verrons également comment appliquer ces principes pour améliorer son code métier et perfectionner l’architecture de son application.
• Comment installer Apache Flink sur votre PC ou Mac et comment se familiariser avec CLI, Job Client Web interface et Job Manager Web Interface?
• Comment développer une application Big Data en Java / Scala en utilisant un IDE?
• Comment développer avec Apache Flink en mode interactif avec Flink Shell ou Zeppelin Notebook (Scala)?
http://www.meetup.com/fr/Paris-Apache-Flink-Meetup/events/225577395/
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Mickaël Rémond
Mickaël Rémond présente l'implementation d'une application de chat simple sur le web à l'aide de Phoenix Presence.
Pour réaliser cette application d'exemple, une migration de Phoenix vers Phoenix 1.2 a été effectuée. Toutes les étapes de la migration sont présentés et peuvent aider les développeurs a effectuer les bonnes étapes pour mettre à jour leur application Phoenix.
Objectif général
Prendre en main l’un des framework PHP les plus utilisés
Objectifs opérationnels
Structurer les fonctionnalités grâce aux bundles
Faire correspondre une URL donnée à un traitement précis grâce au routage
Traiter les requêtes grâce aux contrôleurs
Intégrer des données dans des templates grâce à TWIG
Faciliter la communication avec une base de données grâce à Doctrine
Permettre à un utilisateur d’initialiser ou de modifier les attributs d'un objet métier grâce aux formulaires
La formation complète est disponible ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-exchange-2010-70-662
Cette formation pratique vous permettra d'acquérir les connaissances et compétences nécessaires pour configurer et gérer un environnement de messagerie sous Microsoft Exchange Server 2010. Aucune connaissance d'Exchange Server n'est requise.
Durant ce cours et en se basant sur ses longues années d'expériences Emmanuel VINAZZA vous apprendra comment configurer Exchange Server 2010, ainsi que de vous fournir des lignes directrices, les meilleures pratiques et divers éléments à prendre en compte qui vous aideront à optimiser votre déploiement de serveur Exchange.
Panorama des tendances, nouvelles normes, conseils précieux aux développeurs… Entre front, back et design, le Blend Web Mix offre chaque année un cocktail très prisé de technologies et de savoir-faire.
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
Retour d'expérience sur les pratiques que j'utilise au quotidien pour l'industrialisation de mes développements WordPress...
https://lyon.wordcamp.org/2015/session/wordpress-git-et-lintegration-continue/
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-apache-le-guide-complet-de-ladministrateur
Cette formation a pour but de vous présenter une version d’apache, et de différents modules.
Sans forcément rentré dans les détails de chaque module nous allons voir un ensemble de points de configuration.
This session introduces most well known design patterns to build PHP classes and objects that need to store and fetch data from a relational databases. The session will describe the difference between of the Active Record, the Table and Row Data Gateway and the Data Mapper pattern. We will also examine some technical advantages and drawbacks of these implementations. This talk will expose some of the best PHP tools, which ease database interactions and are built on top of these patterns.
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
Intégration Continue PHP avec Jenkins CIHugo Hamon
Comment assurer le suivi qualite du code source d'une application web? Ce n'est pas une tache aisée ! C’est d’autant plus vrai que PHP est encore considéré aujourd'hui comme un langage peu professionnel. PHP est pourtant un langage dont l'outillage n'a rien a envier a l'ensemble de ses concurrents. L'objectif de cette conférence est de présenter les bonnes pratiques à adopter ainsi que les différents outils a mettre en oeuvre afin de contrôler la qualité d'un projet PHP au quotidien. Un focus particulier sera porté sur la plateforme d'intégration continue Jenkins, les tests unitaires ou bien encore la récupération et l'interprétation des métriques collectées.
Symfony2 - extending the console componentHugo Hamon
The goal of this session is to explain how to take benefit from the Symfony2 command line interface tool. First, I have a closer look at the most interesting commands to generate code and help you reduce your development time. Then, I will show you how to create your own commands to extend the Symfony CLI tool and automate your tedious and redundant tasks. This part of the talk will also explain how to create interactive tasks, interact with the database, generating links or send emails from the command line. Of course, there will be a focus on how to design your commands the best way to make them as much testable as possible.
Développeurs, cachez-moi ça ! (Paris Web 2011)Hugo Hamon
L'une des contraintes les plus complexes à résoudre lorsqu'on développe une application web consiste à ne pas générer deux fois la même page. Pour y parvenir, la plupart des développeurs ont recours à des solutions de cache propriétaires qui montrent rapidement leurs limites lorsqu'il s'agit de cacher des pages très dynamiques. Un article et ses commentaires, accompagnés d'un flux Twitter actif par exemple. Heureusement, le protocole HTTP offre depuis très longtemps des outils adaptés pour contrôler la mise en cache côté navigateur. Au cours de cet atelier, nous étudierons tout d'abord les modèles fondamentaux du cache HTTP côté client grâce à l'expiration et la validation. Enfin, nous découvrirons comment améliorer les performances tout en restant le plus dynamique possible grâce aux Edge Side Includes, ESI, et les reverse proxy caches tels que Varnish.
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
L’arrivée de PHP 5.3 en milieu d’année 2009 a bouleversé la manière de développer des applications web. En effet, cette nouvelle version a apporté de nouveaux outils au langage tels que les espaces de nommage qui favorisent la réutilisabilité du code lorsqu’ils sont employés à bon escient. Les nouveaux frameworks de développement rapide ont aussi suivi le mouvement et reposent sur la base de PHP 5.3. C’est le cas de Symfony2 dont la version stable est prévue prochainement.
Cette présentation offre un tour d’horizon de la nouvelle architecture du framework qui s’articule autour de “bundles”, de librairies externes et de nombreux composants indépendants tels que le conteneur d’injection de dépendances. Nous dresserons un panorama des principales fonctionnalités offertes par le framework telles que la couche d’ORM Doctrine 2, le moteur de templating Twig et la gestion des formulaires. Nous nous intéresserons également à la gestion du cache HTTP, à la couche de sécurité ainsi qu’aux outils de débogage destinés à améliorer la productivité du développeur et la maintenance de l’application.
Build powerfull and smart web applications with Symfony2Hugo Hamon
Symfony2 first stable release is scheduled for the first week of March 2011. During this session, we will have a look at the new framework architecture and most of its powerfull features.
We will show you how Symfony2 implements the MVC pattern and an HTTP request is processed and converted as a response for the end user. Of course, we will talk about the configuration principles and how it's easy to configure Symfony2 project parts like the routing system or the data model. We will also focus on other major components of the framework like the Doctrine2 integration, forms, security (authentication and authorizations) or HTTP cache management.
2. Qui suis-‐‑je ?
v Hugo HAMON (@hhamon)
v Responsable des formations à
v Premiers pas avec PHP en 2002
v Secrétaire de l’AFUP
v Auteur du site Apprendre-PHP.com
v Coauteur & contributeur à des ouvrages Eyrolles
4. Le projet symfony…
symfony 1.0 symfony 1.1 symfony 1.4 Symfony 2.0
License MIT
Version actuelle 1.0.22 1.1.9 1.4.8 2.0.0 - PR
Date de sortie Octobre 2005 Juin 2008 Novembre 2009 Mars 2011
Support Terminé Terminé Fin 2012 ?
Stabilité Stable Stable Stable Presque stable
Production Oui Oui Oui Bientôt
Documentation Oui Oui Oui En cours
5. Ø Documentation Open-Source
Ø API stable et fiable
Ø Communauté active
Ø Plugins Open-Source
Ø Développeurs sur le marché
Ø Formation & Consulting
Un riche écosystème
9. Industrialiser
§ Développer plus vite
§ Développer mieux
§ Réduire les coûts de développement
§ Favoriser la réutilisabilité du code
§ Simplifier les opérations de maintenance
§ Simplifier les déploiements
20. Simplifier les déploiements
$ php symfony project:deploy production --go
[production]
host=123.456.7.8
user=hhamon
port=22
path=/var/www/www.monsite.com
Déploiement automatisé avec une connexion SSH + RSYNC
Configuration des serveurs de déploiement dans un fichier INI
28. Configuration des URLs
q Optimisation pour les SEO
q Faciles à bookmarker, mémoriser ou échanger
q Masquent l’implémentation technique
http://www.domain.tld/blog.php?action=show&id=12546
http://www.domain.tld/blog/2010/11/10/forum-php-afup
URL PHP
URL Symfony
30. Accès aux bases de données
§ Projets matures
§ Pilotés par F. Zaninotto & J.Wage
§ Abstraction de BDD & ORM
§ PDO pour couche basse
§ Nombreuses BDD supportées
§ Génération de code et behaviors
§ API abstraite et OO de requêtes SQL
§ Migrations
31. ORM / Active Record
$speaker = new Speaker();
$speaker->setFirstName('Hugo');
$speaker->setLastName('Hamon');
$conference = new Conference();
$conference->setSpeaker($speaker);
$conference->setTitle('Introduction à symfony');
$conference->setSchedule('2010-11-10 09:00:00');
$conference->save();
Sauvegarde des deux enregistrements en BDD
32. Traitement des formulaires
§ Simplifier la création et la validation des formulaires
§ API entièrement orientée objet
§ Flexible et extensible
§ Intégration avec les ORMs
§ Nombreux validateurs et « widgets » livrés
§ Simplicité d’utilisation pour les intégrateurs web
33. class ContactForm extends sfForm
{
public function configure()
{
$this->setWidgets(array(
'email' => new sfWidgetFormInputText(),
'message' => new sfWidgetFormTextarea()
));
$this->setValidators(array(
'email' => new sfValidatorEmail(),
'message' => new sfValidatorString()
));
$this->widgetSchema->setNameFormat('contact[%s]');
}
}
34. class contactActions extends sfActions
{
public function executeProcessForm(sfWebRequest $request)
{
$this->forward404Unless($request->getMethod('post'));
$this->form = new ContactForm();
$this->form->bind($request->getParameter('contact'));
if ($this->form->isValid())
{
$values = $this->form->getValues();
// ... do something
$this->redirect('contact/thankYou');
}
}
}
35. I18N & L10N
§ Sites multilingues
§ Formatage de dates, monnaies, nombres…
§ Gestion des pluriels
§ Localisation des chaînes de l’interface
§ Support des tables I18N par les ORMs
§ Gestion automatique de la culture de l’utilisateur
36. I18N & L10N
<p>
<?php echo __('Hello, my name is %name%', array(
'%name%' => 'Hugo’
)) ?>.
</p>
<p>
It costs <?php echo format_currency(125990, 'EUR') ?>.
</p>
<p>
There are <?php echo format_number(1350) ?> people here.
</p>
37. Authentification et ACLs
§ Authentification de l’utilisateur
§ Gestion des droits d’accès
$user->setAuthenticated(true);
$user->isAuthenticated();
$user->addCredentials(array('AUTHOR', 'PUBLISHER'));
$user->hasCredential('PUBLISHER');
38. Envoi d’emails
§ Intégration de Swift Mailer
§ API orientée objet
§ Flexible et extensible
§ Support des files d’attente de mails
§ Entièrement configurable
§ Intégration avec les ORMs
39. Envoi d’emails
$mail = $this->getMailer()->compose(
'you@example.com',
'me@example.com',
'Hell You!',
"Hey guy, what's up ?"
);
$mail->setPriority(3);
$mail->attach(Swift_Attachment::fromPath('file.pdf'));
$this->getMailer()->send($mail);
Le mailer est entièrement configurable
41. Sécurité
q Echappement automatique des variables de vue
q Sécurisation des formulaires avec des jetons uniques
q Requêtes préparées par les ORMs
$speaker = Doctrine_Query::create()->
from('Speaker s')->
where('s.last_name LIKE ?', '%Hamon%')->
fetchOne();
42. Configuration d’Apache
q Accès au répertoire web/ depuis un navigateur
<VirtualHost *:80>
ServerName www.my-domain.com
DocumentRoot "/path/to/SymfonyProject/web"
<Directory "/path/to/SymfonyProject/web">
AllowOverride All
Allow from All
</Directory>
Alias /sf /path/to/SymfonyProject/lib/vendor/symfony/data/web/sf
<Directory "/path/to/SymfonyProject/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
51. Composants de Zend Framework
q Intégration des composants du Zend Framework
q Outils éprouvés et testés
q Interopérabilité entre les deux projets
q Zend_Soap, Zend_Lucene, Zend_Service_Twitter…
q Obtenez que le meilleur des deux mondes J
53. Tests unitaires
q Symfony 1.x : Lime
q Symfony 2.x : PHPUnit 3.5
q Vérifier que le code est correct
q Faciliter la détection des bogues et des régressions
q Documenter le code
55. Tests fonctionnels
q Vérifier les fonctionnalités de l’application
q Simuler un scénario de navigation sur le site
q Tester toutes les couches (request, response, user…)
q API qui simule un véritable navigateur web
q Syntaxe verbeuse et intuitive
59. Rôle du cache de symfony
q Cache de la configurationYAML
q Cache des dictionnaires de traduction XLIFF
q Cache des pages HTML
q Cache des requêtes SQL (Doctrine)
q => Répondre plus vite à une requête HTTP
60. Performances de Symfony2
q Bénéfices des optimisations apportées à PHP 5.3
q Conteneur d’Injection de Dépendances
q Chargement à la demande des objets
q Limitation de l’occupation mémoire
q Cache HTTP performant et très flexible
q Performances accrues avec un Reverse Proxy (Varnish / Squid)
q Support des ESI – Edge Side Includes – RFC 2616
61. Surcharge du coeur
q Possibilité de redéfinir la configuration de symfony
q Ex : Request, Response, User, Cache, I18N, Mailer…
dev:
mailer:
param:
delivery_strategy: none
transport:
class: Swift_NullTransport