Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
symfony
                         Simplifier le développement des
                           interfaces bases de données

 ...
Sensio Labs | Fabien Potencier
  • Sensio
                                                                                ...
symfony
  • Framework Web PHP 5
  • Basé sur
          – 9 ans d’expérience Sensio
          – des projets Open-Source exi...
Les Buts de symfony
  • Rapprocher le monde de l’Entreprise
    et le monde de l’Open-Source

  • Développer plus vite

  ...
Développer plus vite
  • Une ligne de code a un coût
                                                                     ...
Ne pas réinventer la roue
  • Intégrer les Bonnes Pratiques
  • Architecture MVC : Modèle / Vue / Contrôleur

  • Tests un...
Les Principaux Atouts
  • symfony, c’est du code efficace
    mais c’est également…
  • Documentation
          – Un livre...
Interfaces Bases de Données
  • Des besoins différents selon la cible
          – Pour l’administrateur
          – Pour l...
Pour l’Administrateur
  • La ligne de commande
  • Interfaces visuelles Desktop ou Web
          – phpMyAdmin / MySQL Admi...
Pour le Développeur
  • Couche d’abstraction Base de données
          – Creole
          – PDO (PHP 5.1)
  • ORM Tools (O...
Pour le Client
  • Front-Office :
          – Interaction en lecture principalement
          – Formulaires


  • Back-Off...
Abstraction SQL
  • Creole permet d’abstraire les différences SQL
          – Gestion des limit / offset
          – Gesti...
Le Modèle (Propel)
  // lib/model/Author.php
  class Author extends BaseAuthor
  {
    function getFullName()
    {
      ...
Le Modèle (Doctrine)
  // lib/model/doctrine/lib/Author.php
  class Author extends BaseAuthor
  {
    function getFullName...
Création du Back-Office
  • Création automatique d’une Console
    d’Administration de Production
          – Listes      ...
Admin Generator
  • Liste




Forum PHP - Paris 2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensiol...
Admin Generator
  • Edition




   __toString()


                                                         widgets        ...
Extensibilité
  • Extension du module
         class postActions extends autoPostActions
         {
           protected f...
Configurabilité

           # apps/frontend/modules/post/config/generator.yml
           generator:
              class:  ...
Démonstration




Forum PHP - Paris 2007   www.symfony-project.com   fabien.potencier@sensio.com   www.sensiolabs.com
Les Formulaires
  • Peu de valeur ajoutée du développeur…
  • ... mais sujet complexe
          – Validation
          – A...
Les Formulaires dans symfony 1.1
  • 3 niveaux
          – sfValidator : gestion de la validation
          – sfWidget : g...
sfFormPropel
  • Formulaire générées pour les objets Propel
  • Entièrement personnalisables
  • Introspection du schéma :...
sfFormPropel
  class bookActions        extends sfActions
  {
    public function        executeEdit($request)
    {
     ...
Personnaliser les Forms Propel
  class BookForm extends BaseBookForm
  {
    public function configure()
    {
      $this...
Un Framework pour les Professionnels
  •     Issue de l’expérience
  •     1.0 stable, maintenue et support commercial
  •...
Quelques Chiffres
  •     3 ans de R&D
  •     Version 1.0 stable
  •     Support commercial
  •     Documentation Open-So...
Next symfony Workshops


   En français : Paris, France - Dec 05, 2007

      In English : Paris, France - Feb 13, 2008

 ...
Rejoignez-nous
  • Sensio Labs recrute en France
          – Des développeurs
          – Des chefs de projet technique
  ...
Sensio S.A.
                                     26, rue Salomon de Rothschild
                                         92...
Upcoming SlideShare
Loading in …5
×

symfony : Simplifier le développement des interfaces bases de données (PHP Forum 2007)

9,289 views

Published on

Published in: Technology
  • Be the first to comment

symfony : Simplifier le développement des interfaces bases de données (PHP Forum 2007)

  1. 1. symfony Simplifier le développement des interfaces bases de données Fabien Potencier http://www.symfony-project.com/ http://www.sensiolabs.com/ Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  2. 2. Sensio Labs | Fabien Potencier • Sensio Sensio – Agence Interactive Agence Interactive – Créée en 1998 Webmarketing Technologies Internet – Groupe de 150 personnes – 30 personnes dédiées à Internet • Spécialiste du monde Open-Source Créateur – Un pôle R&D dédié à l’Open-Source Framework symfony • Des clients Grands Comptes et Institutionnels Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  3. 3. 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 Licence MIT – Environnements exigeants Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  4. 4. 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 fabien.potencier@sensio.com www.sensiolabs.com
  5. 5. Développer plus vite • Une ligne de code a un coût moins de code – Pour l’écrire  – Pour la tester moins de complexité – Pour la maintenir  moins de bugs • Ecrire moins de code  gain de productivité – Architecture : contrôleur, ORM, …  – Fichiers de configuration gain de temps – Autoloading – Générateurs – Helpers • Plus de temps pour les règles métiers, cas limites, … Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  6. 6. 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 fabien.potencier@sensio.com www.sensiolabs.com
  7. 7. 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 1.0 – Formations Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  8. 8. Interfaces Bases de Données • 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 – … Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  9. 9. 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 fabien.potencier@sensio.com www.sensiolabs.com
  10. 10. 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 fabien.potencier@sensio.com www.sensiolabs.com
  11. 11. 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 fabien.potencier@sensio.com www.sensiolabs.com
  12. 12. 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 fabien.potencier@sensio.com www.sensiolabs.com
  13. 13. Le Modèle (Propel) // lib/model/Author.php class 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 fabien.potencier@sensio.com www.sensiolabs.com
  14. 14. Le Modèle (Doctrine) // lib/model/doctrine/lib/Author.php class Author extends BaseAuthor { function getFullName() { return $this->getFirstName().' '.$this->getLastName(); } } $author = new Author(); $author->setFirstName('Fabien'); $author->setLastName('Potencier'); Même mode de fonctionnement que Propel $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')); Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  15. 15. Création du Back-Office • Création automatique d’une Console d’Administration de Production – Listes – Filtres Code généré MVC et personnalisable – Pagination – Validation Fichier configuration Contrôleur – Tri – CRUD Templates $ ./symfony propel-init-admin frontend post Post 1) Crée un module post 2) Génère la configuration Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  16. 16. Admin Generator • Liste Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  17. 17. Admin Generator • Edition __toString() widgets m2m relationship Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  18. 18. Extensibilité • Extension du module class postActions extends autoPostActions { protected function addFiltersCriteria($c) Generated { module $c->add(PostPeer::IS_PUBLISHED, true); parent::addFiltersCriteria($c); } } • Personnalisation des templates _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 fabien.potencier@sensio.com www.sensiolabs.com
  19. 19. 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 fabien.potencier@sensio.com www.sensiolabs.com
  20. 20. Démonstration Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  21. 21. 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 fabien.potencier@sensio.com www.sensiolabs.com
  22. 22. 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 fabien.potencier@sensio.com www.sensiolabs.com
  23. 23. sfFormPropel • Formulaire générées pour les objets Propel • Entièrement personnalisables • Introspection du schéma : – Converti le type Propel/Creole en validateurs et widgets symfony – Clés étrangères – Relations n / n – Gestion des tables d’internationalisation Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  24. 24. sfFormPropel class 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 fabien.potencier@sensio.com www.sensiolabs.com
  25. 25. Personnaliser les Forms Propel class 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 fabien.potencier@sensio.com www.sensiolabs.com
  26. 26. 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 Web Professionnelle Pragmatique Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  27. 27. 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 Mature – Développeurs dans 80 pays Reconnu – 300 000 visiteurs par mois Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  28. 28. 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 fabien.potencier@sensio.com www.sensiolabs.com
  29. 29. 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 en symfony. Vous développez en PHP5 objets, vous connaissez l’AJAX. – Chef de Projet : Vous êtes développeur et vous souhaitez gérer des projets pour des grands comptes. Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
  30. 30. Sensio S.A. 26, rue Salomon de Rothschild 92 286 Suresnes cedex France Tél. : +33 1 40 99 80 80 Fax : +33 1 40 99 83 34 Contact Fabien Potencier fabien.potencier@sensio.com http://www.sensiolabs.com/ http://www.symfony-project.com/ Forum PHP - Paris 2007 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com

×