2013/10/12 の FuelPHP&CodeIgniter ユーザの集い LT 資料です。
PNPPOPSHͷཪଆ'VFM1)1ͷUBTL׆༻ྫ'VFM1)1ˍ$PEF*HOJUFSϢʔβͷू͍ʢ'VFM1)1౦ژษڧձɺ$PEF*HOJUFSUBMLʣ0DUPCFS 4PUBSP0.63"!PNPPO
View Slide
"CPVU.F
"CPVU.Fw4PUBSP0.63"
"CPVU.Fw4PUBSP0.63"wେࡕ͔Βདྷ·ͨ͠
"CPVU.Fw4PUBSP0.63"wେࡕ͔Βདྷ·ͨ͠w,BOTBJ1)16TFST(SPVQ4UB⒎
"CPVU.Fw4PUBSP0.63"wେࡕ͔Βདྷ·ͨ͠w,BOTBJ1)16TFST(SPVQ4UB⒎w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣ
"CPVU.Fw4PUBSP0.63"wେࡕ͔Βདྷ·ͨ͠w,BOTBJ1)16TFST(SPVQ4UB⒎w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣwPNPPOPSH
"CPVU.Fw4PUBSP0.63"wେࡕ͔Βདྷ·ͨ͠w,BOTBJ1)16TFST(SPVQ4UB⒎w1)1ྺ΄Ͳʢ࠷ۙ'VFM1)1ʣwPNPPOPSHw!PNPPO
ΊΜͲ͕͘͞Γ
ϑϨʔϜϫʔΫΛͬͨαϯϓϧΞϓϦέʔγϣϯ
1 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 created21 FROM posts ORDER BY created DESC LIMIT 522 ');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();
1 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 created21 FROM posts ORDER BY created DESC LIMIT 522 ');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();ͳΜ͔͢Έ·ͤΜ
'VFM1)1ͱͷͳΕͦΊ
͓͖Ͱ͢Ͷ
ଞʹ
࠷ۙ
+40/ͰΓͱΓ
͋Γ͕ͱ͏
ͯ͞
PNPPOPSH
PNPPOPSHw͝Ζελʔτ
PNPPOPSHw͝ΖελʔτwࣸਅͱҰߦίϝϯτ͚ͩ
PNPPOPSHw͝ΖελʔτwࣸਅͱҰߦίϝϯτ͚ͩw࠷ॳ)5.-'51Ξοϓϩʔυ
؆қԽͷྺ࢙
؆қԽͷྺ࢙w'MJDLS
؆қԽͷྺ࢙w'MJDLSw1)1.Z42-
؆қԽͷྺ࢙w'MJDLSw1)1.Z42-w'MJDLS&ZF'J
؆қԽͷྺ࢙w'MJDLSw1)1.Z42-w'MJDLS&ZF'JwಠࣗDSPOKPC
ΦϨΦϨͳͷͰ͠ͳ͍
5BTLTBSFDMBTTFTUIBUDBOCFSVOUISPVHIUIFDPNNBOEMJOFPSTFUVQBTBDSPOKPC5IFZBSFHFOFSBMMZVTFEGPSCBDLHSPVOEQSPDFTTFT UJNFEUBTLTBOENBJOUFOBODFUBTLT5BTLTDBODBMMTNPEFMTBOEPUIFSDMBTTFTKVTUMJLFDPOUSPMMFST
5BTLT
5BTLTwίϚϯυϥΠϯ͔ΒݺΔ
5BTLTwίϚϯυϥΠϯ͔ΒݺΔwDSPOKPCͱͯ͑͠Δ
5BTLTwίϚϯυϥΠϯ͔ΒݺΔwDSPOKPCͱͯ͑͠ΔwόοΫάϥϯυॲཧͱ͔
5BTLTwίϚϯυϥΠϯ͔ΒݺΔwDSPOKPCͱͯ͑͠ΔwόοΫάϥϯυॲཧͱ͔wఆظతͳॲཧͱ͔
5BTLTwίϚϯυϥΠϯ͔ΒݺΔwDSPOKPCͱͯ͑͠ΔwόοΫάϥϯυॲཧͱ͔wఆظతͳॲཧͱ͔wϝϯςφϯεʹ
5BTLTwίϚϯυϥΠϯ͔ΒݺΔwDSPOKPCͱͯ͑͠ΔwόοΫάϥϯυॲཧͱ͔wఆظతͳॲཧͱ͔wϝϯςφϯεʹwϞσϧΫϥεΛίϯτϩʔϥ͔ΒݺͿ࣌Έ͍ͨʹݺΔ
͍͚Δ͔
ͬͯΈͨ
▾ fuel/ ▾ app/ ▸ cache/ ▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeep֎෦ϥΠϒϥϦ
▾ fuel/ ▾ app/ ▸ cache/ ▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeepΫϥε
require_once APPPATH . 'vendor' . DS . 'phpFlickr' . DS . 'phpFlickr.php';class Flickr{ protected static $_instance = null; private function __construct() { $this-‐>api = new phpFlickr( 'xxxxxxxxxxxxxxxxxxxx' //Config::get('app.flickr_api_key') ); } public static function forge() { if (empty(self::$_instance)) { static::$_instance = new static(); } return static::$_instance-‐>api; }}
▾ fuel/ ▾ app/ ▸ cache/ ▾ classes/ ▸ controller/ ▸ model/ ▸ twig/ ▸ view/ flickr.php ▾ config/ ▸ development/ ▸ production/ ▸ test/ config.php db.php parser.php rest.php routes.php ▸ lang/ ▸ less/ ▸ logs/ ▸ migrations/ ▸ modules/ ▾ tasks/ flickr.php robots.php ▸ tests/ ▸ tmp/ ▾ vendor/ ▸ Goutte/ ▾ phpFlickr/ auth.php example.php getToken.php phpFlickr.php README.txt ▸ Twig/ .gitkeepλεΫ
namespace Fuel\Tasks;class Flickr{ public static function run($limit = 4) { $response = \Flickr::forge()-‐>photos_search( array( 'user_id' => '94387617@N00', 'per_page' => $limit, 'tags' => 'asgt,cover', 'tag_mode' => 'all', 'sort' => 'date-‐taken-‐desc' ) ); foreach ($response['photo'] as $photo) { $r = \Flickr::forge()-‐>photos_getInfo($photo['id']); $e = \Flickr::forge()-‐>photos_getExif($photo['id']); //print_r($e['camera']); if (null === \Model_Coverphoto::find_by('flickr_id', $r['photo']['id'])) { $r['photo']['dates']['taken']; $coverphoto = \Model_Coverphoto::forge(); $coverphoto-‐>flickr_id = $r['photo']['id']; $coverphoto-‐>title = $r['photo']['description']; $coverphoto-‐>taken_at = $r['photo']['dates']['taken']; $coverphoto-‐>camera = $e['camera']; $coverphoto-‐>data = json_encode($r['photo']); $coverphoto-‐>save(); } } }}
# crontab -‐e* * * * * cd /var/www/omoon.org; /usr/bin/php oil refine flickr:run
λά͚͚ͩͰߋ৽Մೳ
J1IPOFͷqJDLSΞϓϦͰ
ࠓޙͷల
UBTLΛੵۃతʹ͍·͠ΐ͏
͋Γ͕ͱ͏͍͟͝·ͨ͠