Upload
fabien-potencier
View
7.975
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
symfonySimplifier le développement des
interfaces bases de données
Fabien Potencierhttp://www.symfony-project.com/
http://www.sensiolabs.com/
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Sensio Labs | Fabien Potencier• Sensio
– Agence Interactive– Créée en 1998– Groupe de 150 personnes– 30 personnes dédiées à Internet
• Spécialiste du monde Open-Source– Un pôle R&D dédié à l’Open-Source
• Des clients Grands Comptes et Institutionnels
Webmarketing TechnologiesInternet
SensioAgence Interactive
CréateurFramework symfony
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
symfony• Framework Web PHP 5• Basé sur
– 9 ans d’expérience Sensio– des projets Open-Source existants
• Open-Source• Conçu pour gérer :
– Sites professionnels– Problématiques complexes– Environnements exigeants
Licence MIT
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Les Buts de symfony• Rapprocher le monde de l’Entreprise
et le monde de l’Open-Source
• Développer plus vite
• Ne pas réinventer la roue
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Développer plus vite• Une ligne de code a un coût
– Pour l’écrire– Pour la tester– Pour la maintenir
• Ecrire moins de code– Architecture : contrôleur, ORM, …– Fichiers de configuration– Autoloading– Générateurs– Helpers
• Plus de temps pour les règles métiers, cas limites, …
moins de code
moins de complexité
moins de bugs
gain de productivité
gain de temps
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Ne pas réinventer la roue• Intégrer les Bonnes Pratiques• Architecture MVC : Modèle / Vue / Contrôleur
• Tests unitaires et fonctionnels
• Gestion des déploiements, support des environnements• Configurabilité• Sécurité (protection XSS et CSRF par défaut)• Extensibilité (système de plugins)• Admin Generator simplifier
la vie
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Les Principaux Atouts• symfony, c’est du code efficace
mais c’est également…• Documentation
– Un livre sous licence GFDL (450p)– Le tutorial askeet (250p)
• 1.0 maintainue par Sensio– ~1 mise à jour par mois (bugs)– Support Commercial– Formations
1.0
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
• Des besoins différents selon la cible– Pour l’administrateur– Pour le développeur– Pour le client
• Des moteurs différents– MySQL– PostgreSQL– Oracle– MS SQL– DB2– …
Interfaces Bases de Données
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Pour l’Administrateur• La ligne de commande• Interfaces visuelles Desktop ou Web
– phpMyAdmin / MySQL Administrator– phpPgAdmin / pgAdmin
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Pour le Développeur• Couche d’abstraction Base de données
– Creole– PDO (PHP 5.1)
• ORM Tools (Object Relational Mapping)– Propel– Doctrine
• Générateurs dans symfony
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Pour le Client• Front-Office :
– Interaction en lecture principalement– Formulaires
• Back-Office– Listes, filtres, pagination– CRUD : Create Read Update Delete
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Abstraction SQL• Creole permet d’abstraire les différences SQL
– Gestion des limit / offset– Gestion des dates– …
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Le Modèle (Propel)// lib/model/Author.phpclass Author extends BaseAuthor{ function getFullName() { return $this->getFirstName().' '.$this->getLastName(); }}
$author = new Author();$author->setFirstName('Fabien');$author->setLastName('Potencier');$author->save();
$post = new Post();$post->setAuthor($author);$post->setPublishedOn('tomorrow 12:00');$post->isPublished(true);$post->save();
$posts = PostPeer::doSelect(new Criteria());
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Le Modèle (Doctrine)// lib/model/doctrine/lib/Author.phpclass Author extends BaseAuthor{ function getFullName() { return $this->getFirstName().' '.$this->getLastName(); }}
$author = new Author();$author->setFirstName('Fabien');$author->setLastName('Potencier');$author->save();
$post = new Post();$post->setAuthor($author);$post->setPublishedOn('tomorrow 12:00');$post->isPublished(true);$post->save();
$posts = Doctrine::getTable('Post')->findAll();
$post = Doctrine::getTable('Post')->find($request->getParameter('id'));
Même mode de fonctionnement que Propel
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Création du Back-Office• Création automatique d’une Console
d’Administration de Production– Listes– Pagination– Tri
$ ./symfony propel-init-admin frontend post Post
1) Crée un module post2) Génère la configuration
Code généré MVCet personnalisable
Fichier configurationContrôleurTemplates
– Filtres– Validation– CRUD
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Admin Generator• Liste
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Admin Generator• Edition
__toString()
widgets m2m relationship
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Extensibilité• Extension du module class postActions extends autoPostActions { protected function addFiltersCriteria($c) { $c->add(PostPeer::IS_PUBLISHED, true); parent::addFiltersCriteria($c); } }
• Personnalisation des templates
Generatedmodule
_edit_* : actions, footer, form, header, messages_list_* : footer, header, messages, td_actions, t(d|h)_stacked, t(d|h)_tabular_filters, editSuccess, listSuccess
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Configurabilité
# apps/frontend/modules/post/config/generator.yml generator: class: sfPropelAdminGenerator param: model_class: Post list: display: [=title, author, created_on] filters: [title, author, published_on]
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Démonstration
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Les Formulaires• Peu de valeur ajoutée du développeur…• ... mais sujet complexe
– Validation– Affichage– Sérialisation en base de données– Séparation entre les 3 couches MVC
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Les Formulaires dans symfony 1.1• 3 niveaux
– sfValidator : gestion de la validation– sfWidget : gestion des widgets HTML– sfForm : gestion du cycle de vie d’un formulaire
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
sfFormPropel• Formulaire générées pour les objets Propel• Entièrement personnalisables• Introspection du schéma :
– Converti le type Propel/Creole en validateurs etwidgets symfony
– Clés étrangères– Relations n / n– Gestion des tables d’internationalisation
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
sfFormPropelclass bookActions extends sfActions{ public function executeEdit($request) { $this->book = BookPeer::retrieveByPk($request->getParameter('id')); $this->form = new AuthorForm($this->book);
if ($request->isMethod('post')) { $this->form->bind($request->getParameter('book'); if ($this->form->isValid()) { $book = $this->form->save();
$this->redirect('@book?id='.$book->getId()); } } }}
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Personnaliser les Forms Propelclass BookForm extends BaseBookForm{ public function configure() { $this->embedI18n(array('en', 'fr'));
$this->widgetSchema['en']->setLabel('en', 'English');
unset($this['created_at']);
$this->validatorSchema['foo'] = new sfValidatorPass(); $this->widgetSchema['foo'] = new sfWidgetIdentity();
$this->setDefault('published_on', time()); }}
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Un Framework pour les Professionnels
• Issue de l’expérience• 1.0 stable, maintenue et support commercial• Communauté large et compétente• Extensibilité• Stabilité de l’API• Documentation
Une vision du WebProfessionnelle
Pragmatique
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Quelques Chiffres• 3 ans de R&D• Version 1.0 stable• Support commercial• Documentation Open-Source
– Livre référence (450 pages - GFDL)– Tutorial pas à pas (250 pages)
• Communauté importante– Développeurs dans 80 pays– 300 000 visiteurs par mois
MatureReconnu
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Next symfony Workshops
En français : Paris, France - Dec 05, 2007
In English : Paris, France - Feb 13, 2008
Plus d’informations sur www.sensiolabs.com
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Rejoignez-nous• Sensio Labs recrute en France
– Des développeurs– Des chefs de projet technique
• Le Web est l’une de vos passions ?– Développeur : Vous avez une expérience dans le
développement de sites Web en PHP voire ensymfony. Vous développez en PHP5 objets, vousconnaissez l’AJAX.
– Chef de Projet : Vous êtes développeur et voussouhaitez gérer des projets pour des grands comptes.
Forum PHP - Paris 2007 www.symfony-project.com [email protected] www.sensiolabs.com
Sensio S.A.26, rue Salomon de Rothschild
92 286 Suresnes cedexFrance
Tél. : +33 1 40 99 80 80Fax : +33 1 40 99 83 34
ContactFabien Potencier
http://www.sensiolabs.com/ http://www.symfony-project.com/