Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Faites des étincelles avec Silex

Faites des étincelles avec Silex

Présentation pour le track PHP de l'Open World Forum 2012 : http://act.osdc.fr/osdc2012fr/talk/4306

Par son approche innovante, Silex permet de sortir de l'âge de pierre du développement PHP.

Inspiré du micro-framework Ruby Sinatra, Silex met à l'honneur les nouveautés de la communauté PHP comme Composer ou les composants Symfony et tire partie du dynamisme du langage PHP pour simplifier le développement de sites ou de services Web.

70a6e5c61ba886bbdea1401197def8c7?s=128

Benoît Merlet

October 12, 2012
Tweet

More Decks by Benoît Merlet

Other Decks in Technology

Transcript

  1. opérateur de services open source Faites des étincelles avec Silex

  2. 12/10/12 2 Qui suis-je ?

  3. 3 12/10/12 Benoît Merlet Consultant et formateur chez Alter Way

    Passionné de NTIC notamment dans le domaine du Web Utilisateur de logiciels libres, donc contributeur https://github.com/trompette https://twitter.com/trompouet https://connect.sensiolabs.com/profile/trompette
  4. 12/10/12 4 Qui êtes vous ?

  5. 5 12/10/12 L'assistance Profil : curieux, développeur, décideur ? Web

    : hobby, travail, passion ? PHP : débutant, confirmé, expert ? Symfony : inconnu, pratiquant, converti ? Bonnes pratiques ? Architecture logicielle ? Paradigme objet, design patterns ? Industrialisation ?
  6. 12/10/12 6 Qu'est-ce que Silex ?

  7. 7 12/10/12 Micro-framework PHP Micro Fonctionnalités peu étendues Répond à

    des besoins simples Framework Bonnes pratiques Boîte à outils PHP Version 5.3.3 minimum
  8. 8 12/10/12 Inspiré de Sinatra Micro-framework Ruby « Sinatra is

    a DSL for quickly creating web applications » Syntaxe spécifique à un domaine Le domaine est le Web : Requête Réponse → require 'sinatra' get '/hi' do 'Hello World!' end
  9. 9 12/10/12 Basé sur Symfony Composants requis pimple/pimple symfony/event-dispatcher symfony/http-foundation

    symfony/http-kernel symfony/routing En option Validation, Form, Locale, Translation, HTTP Cache, …
  10. 10 12/10/12 Derniers détails Communauté PHP Composer, Twig, Doctrine DBAL,

    Monolog, Swiftmailer, ... Créateurs Fabien Potencier (Symfony) Igor Wiedler (phpBB) Logiciel libre Licence MIT
  11. 12/10/12 11 Pourquoi utiliser Silex ?

  12. 12 12/10/12 Simple et efficace $app = new Silex\Application(); $app->get('/hi',

    function() { return 'Hello World!'; }); $app->run();
  13. 13 12/10/12 Bien architecturé État de l'art Contrôleur frontal API

    objet (Request, Response) Noyau adapté au protocole HTTP Gestionnaire d'évènements Gestionnaire d'erreurs Routage dynamique Conteneur d'injection de dépendances Évite de réinventer la roue à chaque projet
  14. 14 12/10/12 Robuste et bien testé Composants Symfony découplés Testés

    unitairement Code source de Silex 3500 LOC 3700 LOC de tests Code source de Pimple 200 LOC 50 NCLOC
  15. 15 12/10/12 Extensible Ajout de fonctionnalités via des « providers

    » ServiceProvider pour enrichir le conteneur ControllerProvider pour configurer des routes Certains sont intégrés Twig, URL Generator, Session, Validator, Form, HTTP Cache, Security, Swiftmailer, Monolog, Translation, Doctrine D'autres sont fournis par la communauté https://github.com/fabpot/Silex/wiki/Third-Party-ServiceProviders
  16. 12/10/12 16 Comment utiliser Silex ?

  17. 17 12/10/12 Installation Fichier composer.json à la racine du projet

    Initialisation du projet { "name": "my-project", "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } wget http://getcomposer.org/composer.phar php composer.phar install
  18. 18 12/10/12 Structure du projet Répertoire vendor Dépendances du projet

    Répertoire web Accessible via le serveur Web |-- composer.json |-- composer.lock |-- composer.phar |-- vendor | |-- autoload.php | |-- composer | |-- pimple | |-- silex | `-- symfony `-- web |-- favicon.ico `-- index.php
  19. 19 12/10/12 Contrôleur frontal Fichier web/index.php require_once __DIR__.'/../vendor/autoload.php'; use Symfony\Component\HttpFoundation\Response;

    $app = new Silex\Application(); $callable = function ($name) use ($app) { return new Response(sprintf('Hello %s!', $app->escape($name))); }; $app->get('/hi/{name}', $callable) ->assert('name', '\w{5,}') ->value('name', 'World') ->bind('hello'); $app->run();
  20. 20 12/10/12 À savoir Activation du mode DEBUG Activation d'une

    extension Service provider Controller provider Documentation http://silex.sensiolabs.org/documentation $app['debug'] = true; $app->register(new UrlGeneratorServiceProvider); $app->mount('/blog', new Acme\BlogControllerProvider);
  21. 12/10/12 21 Comment industrialiser Silex ?

  22. 22 12/10/12 Composer create-project Utilise un squelette de projet Fichier

    composer.json Structure de répertoires Exemples de code Permet d'éviter de tout configurer à chaque fois Pour https://github.com/fabpot/Silex-Skeleton php composer.phar create-project fabpot/silex-skeleton
  23. 12/10/12 23 Quelles sont les limites de Silex ?

  24. 24 12/10/12 Volonté de simplicité À utiliser pour des besoins

    simples Applications triviales API REST À éviter dans les cas suivants Besoin d'un ORM Gestion avancée d'utilisateurs Sécurisation complexe des pages Silex n'est pas Symfony Attention à l'usine à gaz !