SlideShare une entreprise Scribd logo
Conférence PHP Tour 2012
FuelPHP : A framework, yes – Automagic, no!




                                            Julian Espérat
                                        Sébastien Drouyer

                                                 Nantes
                                        30 novembre 2012




                                                  1/25
Sommaire
 Introduction

 Pourquoi nous aimons FuelPHP

 Oil : la ligne de commande

 Les Packages et l'ORM

 Le futur de FuelPHP

 Questions




                                2/25
Conférenciers




      Sébastien Drouyer
           @sdrdis




       Julian Espérat
       @savageman86


                          3/25
À propos de Novius
  Créée en 1996, basée à Lyon et
  Paris, 40 personnes dont 18
  développeurs.

  Deux métiers : agence web,
  édition logicielle.

  Nos clients : Les Échos,
  Cinémathèque Française, FIS...

  Nos technos : web et libres
  uniquement (LAMP, HTML,
  CSS, JS).


                                   4/25
À propos de Novius OS
  8 ans d'expérience dans le
  CMS.

  CMS open-source nouvelle
  génération, conçu pour
  l'Internet multi-canal.

  Entre le CMS et le web OS.

  Basé sur les dernières
  technologies web : HTML5,
  jQuery UI, Wijmo et FuelPHP.



                                 5/25
Genèse de FuelPHP
 « FuelPHP est né de la frustration des développeurs avec les
 frameworks actuels. »


 1185 watchers et 184 forks sur Github
 2640 followers sur Twitter


 Création fin 2010
 1.0 – 31 juillet 2011
 1.1 – 13 décembre 2011
 1.2 – 3 juin 2012
 1.3 – 5 septembre 2012
 1.4 – 9 novembre 2012


                                                                6/25
Core Team de FuelPHP

    Harro Verton / @WanWizard


    Jelmer Schreuder / @jschreuder


    Frank de Jonge / @frankdejonge




    Dan Horrigan                     Phil Sturgeon
    Fondateur




                                                     7/25
Philosophie de FuelPHP
  S’inspire des meilleures idées des autres frameworks


  Nouveau départ avec PHP 5.3


  Simple, flexible et léger


  "community-driven"


  Configuration over convention – no automagic!




                                                         8/25
Inspiration des autres frameworks




     Simplicité


     Léger et rapide


     Facile à apprendre


     Peu de dépendances serveur




                                    9/25
Inspiration des autres frameworks




     Flexibilité dans la structure des fichiers


     Hiérarchie des répertoires


     Excellent Query Builder




                                                  10/25
Inspiration des autres frameworks




     Ligne de commande


     Migrations


     Scaffolding


     ORM (Active Record)




                                    11/25
Inspiration des autres frameworks




     HMVC / REST


     Templates


     Authentification / ACL


     Envoi de mail




                                    12/25
Sommaire
 Introduction

 Pourquoi nous aimons FuelPHP

 Oil : la ligne de commande

 Les Packages et l'ORM

 Le futur de FuelPHP

 Questions




                                13/25
Syntaxe sexy et concise
// ~/classes/controller/auth.php
class Controller_Admin extends Controller
{
    public function before()
    {
        if ( ! $this->user_is_logged() )
        {
            Response::redirect('login/form');
        }
    }
}

// ~/classes/controller/login.php
class Controller_Login extends Controller
{
    public function action_form()
    {
        return Response::forge(View::forge('login/form'));
    }
}



                                                             14/25
Fichier de configuration
// Stockage : ~/config/date.php
return array(
    'pattern' => array(
        'short' => '%d/%m/%Y',
        'full' => '%d/%m/%Y %H:%M',
        'mysql' => '%Y-%m-%d %H:%M:%S',
        'mysql_date' => '%Y-%m-%d',
    ),
);
// Usage
$config = include 'config/date.php';

// Exemple
function strftime_pattern($date, $pattern = 'short')
{
    Config::load('date');
    $pattern = Config::get("date.format.$pattern", '%d/%m/%Y');
    return strftime($pattern, $date);
}



                                                             15/25
Exemples de drivers
natifs
  Config : php, yml, json, ini
  Session : cookie, file,
  memcached, db, redis
  Cache : file, memcached,
  apc, redis
  Image : gd, imagick,
  imagemagick
  View : php
  Parser : twig, mustache,
  markdown, smarty, dwoo,
  haml, phptal



                                 16/25
Appels statiques et instances
// Configuration : ~/config/session.php
return array(
    'driver' => 'file',
    // ...
    'file' => array(
        'path' => '/tmp',
        // ...
    ),
    'memcached' => array(...),
    'db' => array(...),
    'redis' => array(...),
);
--------------------------------------------------------------
// Exemple avec un appel statique
$user = Session::get('user');


// Exemple identique avec un appel dynamique
$session = Session::forge('file'); // 'file' est le driver
$user = $session->get('user');



                                                             17/25
Sommaire
 Introduction

 Pourquoi nous aimons FuelPHP

 Oil : la ligne de commande

 Les Packages et l'ORM

 Le futur de FuelPHP

 Questions




                                18/25
Oil : la ligne de commande FuelPHP


  Package et utilitaire de FuelPHP




  Inspiré de Ruby on Rails




  Philosophie : optionel, ligne de commande pour simplifier le
  développement




                                                                 19/25
Sommaire
 Introduction

 Pourquoi nous aimons FuelPHP

 Oil : la ligne de commande

 Les Packages et l'ORM

 Le futur de FuelPHP

 Questions




                                20/25
Les Packages et l'ORM
  Possibilité d'ajouter des
  packages
  ●   Tous dans fuel/packages/
  ●   Simple modification dans le
      fichier de configuration


  Packages installés de base
  ●   Auth
  ●   Email
  ●   Oil
  ●   Orm
  ●   Parser

                                    21/25
Les Packages et l'ORM
  Orm
  ●   Très largement inspiré d'Active Record
  ●   Gère les relations entre objets
         ●   has_one
         ●   belongs_to
         ●   has_many
         ●   many_to_many

  ●   Gère les observers
         ●   Comportement sur les colonnes
         ●   CreatedAt : date de création
         ●   UpdatedAt : date de mise à jour




                                               22/25
Sommaire
 Introduction

 Pourquoi nous aimons FuelPHP

 Oil : la ligne de commande

 Les Packages et l'ORM

 Le futur de FuelPHP

 Questions




                                23/25
Futur de FuelPHP
  FuelPHP 2.0 : nouvelle architecture
  ●   Changement progressif dans les versions 1.*


  Composer et PSR−1


  Séparation des fonctionnalités dans des packages spécialisé


  Conditionné par sa communauté, dans un domaine concurrentiel




                                                                24/25
Merci pour votre attention. Des questions ?

http://www.fuelphp.com
http://www.novius-os.org




                            Sébastien Drouyer : @sdrdis
                                Julian Espérat : @savageman86

                                                     Nantes
                                            30 novembre 2012




                                                     25/25

Contenu connexe

Similaire à PHP Tour 2012 - Conférence FuelPHP

Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
neuros
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
Alphorm
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
Jean-Marc Fontaine
 
Présentation Novius OS à l'AFUP Lyon
Présentation Novius OS à l'AFUP LyonPrésentation Novius OS à l'AFUP Lyon
Présentation Novius OS à l'AFUP Lyon
Novius OS
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)
Alphorm
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
JEAN-GUILLAUME DUJARDIN
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
Pascal MARTIN
 
CakePHP formation
CakePHP formationCakePHP formation
CakePHP formation
webdays-agadir
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAP
LINAGORA
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
epixelic
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
Hugo Hamon
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
Alphorm
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4julien pauli
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
Pierre MARTIN
 
COSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptxCOSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptx
FatiMa243348
 

Similaire à PHP Tour 2012 - Conférence FuelPHP (20)

Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Présentation Novius OS à l'AFUP Lyon
Présentation Novius OS à l'AFUP LyonPrésentation Novius OS à l'AFUP Lyon
Présentation Novius OS à l'AFUP Lyon
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
CakePHP formation
CakePHP formationCakePHP formation
CakePHP formation
 
Architecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAP
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 
20070125wlmdb22
20070125wlmdb2220070125wlmdb22
20070125wlmdb22
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
COSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptxCOSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptx
 

Plus de Novius OS

CMS day : Conférence marketing social
CMS day : Conférence marketing socialCMS day : Conférence marketing social
CMS day : Conférence marketing social
Novius OS
 
Présentation Novius OS - AFUP Lyon
Présentation Novius OS - AFUP LyonPrésentation Novius OS - AFUP Lyon
Présentation Novius OS - AFUP Lyon
Novius OS
 
Create Once Publish Everywhere Anytime
Create Once Publish Everywhere AnytimeCreate Once Publish Everywhere Anytime
Create Once Publish Everywhere Anytime
Novius OS
 
Create Once Publish Everywhere Anytime (version française)
Create Once Publish Everywhere Anytime (version française)Create Once Publish Everywhere Anytime (version française)
Create Once Publish Everywhere Anytime (version française)
Novius OS
 
Partage de contenu avec un CMS moderne
Partage de contenu avec un CMS modernePartage de contenu avec un CMS moderne
Partage de contenu avec un CMS moderne
Novius OS
 
Future-Ready Content Management
Future-Ready Content ManagementFuture-Ready Content Management
Future-Ready Content Management
Novius OS
 

Plus de Novius OS (6)

CMS day : Conférence marketing social
CMS day : Conférence marketing socialCMS day : Conférence marketing social
CMS day : Conférence marketing social
 
Présentation Novius OS - AFUP Lyon
Présentation Novius OS - AFUP LyonPrésentation Novius OS - AFUP Lyon
Présentation Novius OS - AFUP Lyon
 
Create Once Publish Everywhere Anytime
Create Once Publish Everywhere AnytimeCreate Once Publish Everywhere Anytime
Create Once Publish Everywhere Anytime
 
Create Once Publish Everywhere Anytime (version française)
Create Once Publish Everywhere Anytime (version française)Create Once Publish Everywhere Anytime (version française)
Create Once Publish Everywhere Anytime (version française)
 
Partage de contenu avec un CMS moderne
Partage de contenu avec un CMS modernePartage de contenu avec un CMS moderne
Partage de contenu avec un CMS moderne
 
Future-Ready Content Management
Future-Ready Content ManagementFuture-Ready Content Management
Future-Ready Content Management
 

PHP Tour 2012 - Conférence FuelPHP

  • 1. Conférence PHP Tour 2012 FuelPHP : A framework, yes – Automagic, no! Julian Espérat Sébastien Drouyer Nantes 30 novembre 2012 1/25
  • 2. Sommaire Introduction Pourquoi nous aimons FuelPHP Oil : la ligne de commande Les Packages et l'ORM Le futur de FuelPHP Questions 2/25
  • 3. Conférenciers Sébastien Drouyer @sdrdis Julian Espérat @savageman86 3/25
  • 4. À propos de Novius Créée en 1996, basée à Lyon et Paris, 40 personnes dont 18 développeurs. Deux métiers : agence web, édition logicielle. Nos clients : Les Échos, Cinémathèque Française, FIS... Nos technos : web et libres uniquement (LAMP, HTML, CSS, JS). 4/25
  • 5. À propos de Novius OS 8 ans d'expérience dans le CMS. CMS open-source nouvelle génération, conçu pour l'Internet multi-canal. Entre le CMS et le web OS. Basé sur les dernières technologies web : HTML5, jQuery UI, Wijmo et FuelPHP. 5/25
  • 6. Genèse de FuelPHP « FuelPHP est né de la frustration des développeurs avec les frameworks actuels. » 1185 watchers et 184 forks sur Github 2640 followers sur Twitter Création fin 2010 1.0 – 31 juillet 2011 1.1 – 13 décembre 2011 1.2 – 3 juin 2012 1.3 – 5 septembre 2012 1.4 – 9 novembre 2012 6/25
  • 7. Core Team de FuelPHP Harro Verton / @WanWizard Jelmer Schreuder / @jschreuder Frank de Jonge / @frankdejonge Dan Horrigan Phil Sturgeon Fondateur 7/25
  • 8. Philosophie de FuelPHP S’inspire des meilleures idées des autres frameworks Nouveau départ avec PHP 5.3 Simple, flexible et léger "community-driven" Configuration over convention – no automagic! 8/25
  • 9. Inspiration des autres frameworks Simplicité Léger et rapide Facile à apprendre Peu de dépendances serveur 9/25
  • 10. Inspiration des autres frameworks Flexibilité dans la structure des fichiers Hiérarchie des répertoires Excellent Query Builder 10/25
  • 11. Inspiration des autres frameworks Ligne de commande Migrations Scaffolding ORM (Active Record) 11/25
  • 12. Inspiration des autres frameworks HMVC / REST Templates Authentification / ACL Envoi de mail 12/25
  • 13. Sommaire Introduction Pourquoi nous aimons FuelPHP Oil : la ligne de commande Les Packages et l'ORM Le futur de FuelPHP Questions 13/25
  • 14. Syntaxe sexy et concise // ~/classes/controller/auth.php class Controller_Admin extends Controller { public function before() { if ( ! $this->user_is_logged() ) { Response::redirect('login/form'); } } } // ~/classes/controller/login.php class Controller_Login extends Controller { public function action_form() { return Response::forge(View::forge('login/form')); } } 14/25
  • 15. Fichier de configuration // Stockage : ~/config/date.php return array( 'pattern' => array( 'short' => '%d/%m/%Y', 'full' => '%d/%m/%Y %H:%M', 'mysql' => '%Y-%m-%d %H:%M:%S', 'mysql_date' => '%Y-%m-%d', ), ); // Usage $config = include 'config/date.php'; // Exemple function strftime_pattern($date, $pattern = 'short') { Config::load('date'); $pattern = Config::get("date.format.$pattern", '%d/%m/%Y'); return strftime($pattern, $date); } 15/25
  • 16. Exemples de drivers natifs Config : php, yml, json, ini Session : cookie, file, memcached, db, redis Cache : file, memcached, apc, redis Image : gd, imagick, imagemagick View : php Parser : twig, mustache, markdown, smarty, dwoo, haml, phptal 16/25
  • 17. Appels statiques et instances // Configuration : ~/config/session.php return array( 'driver' => 'file', // ... 'file' => array( 'path' => '/tmp', // ... ), 'memcached' => array(...), 'db' => array(...), 'redis' => array(...), ); -------------------------------------------------------------- // Exemple avec un appel statique $user = Session::get('user'); // Exemple identique avec un appel dynamique $session = Session::forge('file'); // 'file' est le driver $user = $session->get('user'); 17/25
  • 18. Sommaire Introduction Pourquoi nous aimons FuelPHP Oil : la ligne de commande Les Packages et l'ORM Le futur de FuelPHP Questions 18/25
  • 19. Oil : la ligne de commande FuelPHP Package et utilitaire de FuelPHP Inspiré de Ruby on Rails Philosophie : optionel, ligne de commande pour simplifier le développement 19/25
  • 20. Sommaire Introduction Pourquoi nous aimons FuelPHP Oil : la ligne de commande Les Packages et l'ORM Le futur de FuelPHP Questions 20/25
  • 21. Les Packages et l'ORM Possibilité d'ajouter des packages ● Tous dans fuel/packages/ ● Simple modification dans le fichier de configuration Packages installés de base ● Auth ● Email ● Oil ● Orm ● Parser 21/25
  • 22. Les Packages et l'ORM Orm ● Très largement inspiré d'Active Record ● Gère les relations entre objets ● has_one ● belongs_to ● has_many ● many_to_many ● Gère les observers ● Comportement sur les colonnes ● CreatedAt : date de création ● UpdatedAt : date de mise à jour 22/25
  • 23. Sommaire Introduction Pourquoi nous aimons FuelPHP Oil : la ligne de commande Les Packages et l'ORM Le futur de FuelPHP Questions 23/25
  • 24. Futur de FuelPHP FuelPHP 2.0 : nouvelle architecture ● Changement progressif dans les versions 1.* Composer et PSR−1 Séparation des fonctionnalités dans des packages spécialisé Conditionné par sa communauté, dans un domaine concurrentiel 24/25
  • 25. Merci pour votre attention. Des questions ? http://www.fuelphp.com http://www.novius-os.org Sébastien Drouyer : @sdrdis Julian Espérat : @savageman86 Nantes 30 novembre 2012 25/25