Dive into the Cloud with our buddy, lovely PHP!

4584c227ef4ea69e789e5f53e0476418?s=47 omoon
September 28, 2013

Dive into the Cloud with our buddy, lovely PHP!

PHPでクラウドの世界へ飛び込もう。
JAWS FESTA Kansai 2013 でのスライドです。

4584c227ef4ea69e789e5f53e0476418?s=128

omoon

September 28, 2013
Tweet

Transcript

  1. 47.

    #jawsfesta 1BB4 w "QQ'PHʢIUUQTXXXBQQGPHDPNʣ w "84&MBTUJD#FBOTUBMLʢIUUQBXTBNB[PODPNKQFMBTUJDCFBOTUBMLʣ w DMPVE$POUSPMʢIUUQTXXXDMPVEDPOUSPMDPNʣ w %PU$MPVEʢIUUQTXXXEPUDMPVEDPNʣ

    w &OHJOF:BSEʢIUUQXXXFOHJOFZBSEDPKQʣ w (PPHMF"QQ&OHJOFʢIUUQTEFWFMPQFSTHPPHMFDPNBQQFOHJOFʣ w 1BHPEB#PYʢIUUQQBHPEBCPYDPN
  2. 115.

    #jawsfesta HJUDMPOF %  git  clone  git@github.com:PHP-­‐Engineers-­‐Training-­‐Book/php_mook_sample.git Cloning  into  'php_mook_sample'... remote:

     Counting  objects:  37,  done. remote:  Compressing  objects:  100%  (33/33),  done. remote:  Total  37  (delta  0),  reused  37  (delta  0) Receiving  objects:  100%  (37/37),  1.02  MiB  |  491  KiB/s,  done.
  3. 116.
  4. 117.

    #jawsfesta ▾  php_mook_sample/    ▾  bin/        

       phpmig*  -­‐>  /Users/omoon/Documents/php_mook_sample/vendor/davedevelopment/phpmig/bin/phpmig    ▾  config/            development.php            pagoda.php    ▸  logs/    ▾  migrations/            20130711105053_CreateInitialTables.php*    ▾  public/        ▸  assets/            index.php    ▾  vendor/        ▸  composer/        ▸  davedevelopment/        ▸  doctrine/        ▸  pimple/        ▸  psr/        ▸  silex/        ▸  symfony/        ▸  twig/            autoload.php    ▾  views/            index.twig        Boxfile        composer.json        composer.lock        composer.phar*        phpmig.php
  5. 118.

    #jawsfesta  1  {  2          "require":  {

     3                  "silex/silex":  "1.*",  4                  "doctrine/dbal":  "2.2.*",  5                  "twig/twig":  "~1.8",  6                  "davedevelopment/phpmig":  "*"  7          },  8          "config":  {  9                  "bin-­‐dir":  "bin/" 10          } 11  }
  6. 119.

    #jawsfesta DPNQPTFSJOTUBMM  $  curl  -­‐s  http://getcomposer.org/installer  |  php #!/usr/bin/env

     php All  settings  correct  for  using  Composer Downloading... Composer  successfully  installed  to:  /Users/omoon/Documents/php_mook_sample/ composer.phar Use  it:  php  composer.phar
  7. 120.

    #jawsfesta DPNQPTFSJOTUBMM  %  php  composer.phar  install Loading  composer  repositories

     with  package  information ... ʢུʣ ... symfony/event-­‐dispatcher  suggests  installing  symfony/dependency-­‐injection  () symfony/http-­‐kernel  suggests  installing  symfony/browser-­‐kit  () symfony/http-­‐kernel  suggests  installing  symfony/dependency-­‐injection  () symfony/http-­‐kernel  suggests  installing  symfony/finder  () silex/silex  suggests  installing  symfony/browser-­‐kit  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/css-­‐selector  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/dom-­‐crawler  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/form  (>=2.3,<2.4-­‐dev) Generating  autoload  files
  8. 121.

    #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3  

     4  $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  9. 122.

    #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3  

     4  $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  10. 123.

    #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3  

     4  $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));
  11. 124.

    #jawsfesta 10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development';

    12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  ));
  12. 125.

    #jawsfesta 17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19

             $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  });
  13. 126.

    #jawsfesta  1  {  2          "require":  {

     3                  "silex/silex":  "1.*",  4                  "doctrine/dbal":  "2.2.*",  5                  "twig/twig":  "~1.8",  6                  "davedevelopment/phpmig":  "*"  7          },  8          "config":  {  9                  "bin-­‐dir":  "bin/" 10          } 11  }
  14. 127.

    #jawsfesta 28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30

             $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  });