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

Dive into the Cloud with our buddy, lovely PHP!

omoon
September 28, 2013

Dive into the Cloud with our buddy, lovely PHP!

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

omoon

September 28, 2013
Tweet

More Decks by omoon

Other Decks in Technology

Transcript

  1. #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. #jawsfesta HJUDMPOF %  git  clone  [email protected]: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. #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
  4. #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  }
  5. #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
  6. #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
  7. #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();
  8. #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. #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  ));
  10. #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  ));
  11. #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  });
  12. #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  }
  13. #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  });