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)

8,347

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,347
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
63
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×