Laravel4 Happy Hacking
Upcoming SlideShare
Loading in...5
×
 

Laravel4 Happy Hacking

on

  • 8,481 views

Laravel 勉強会 東京 #1でのプレゼン資料です

Laravel 勉強会 東京 #1でのプレゼン資料です

Statistics

Views

Total Views
8,481
Views on SlideShare
5,187
Embed Views
3,294

Actions

Likes
21
Downloads
28
Comments
0

18 Embeds 3,294

http://new.takyam.com 1739
http://solvalou.net 1346
http://localhost 119
https://twitter.com 44
http://pochika.com 8
http://cloud.feedly.com 8
http://www.solvalou.net 5
https://www.google.co.jp 5
http://www.jcnnow.com 5
http://www.ohida.net 4
http://www.meteor.cc 3
http://meteor.cc 2
http://ohida.net 1
http://webcache.googleusercontent.com 1
http://uxa.jp 1
http://s.deeeki.com 1
http://www.google.co.jp 1
http://re.solvalou.net 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Laravel4 Happy Hacking Laravel4 Happy Hacking Presentation Transcript

  • 2013.05.24Takashi OhidaLARAVEL4HAPPY HACKING13年5月29日水曜日
  • 目次自己紹介PHP / フレームワーク歴Laravel4でつくってみたLaravel4のすごいところ紹介13年5月29日水曜日
  • 自己紹介13年5月29日水曜日
  • 自己紹介名前:大日田 貴司(オオヒダ タカシ)所属:都内ウェブ系企業職業:開発、企画コード書いてません(^_^;)サービス設計とかUI/UXとか13年5月29日水曜日
  • PHP歴PHP歴 8年くらいPython / RubyとかなんとなくわかるGAE / Railsとか少し触ったことある色々あるけどPHPはかわいい13年5月29日水曜日
  • フレームワーク歴僕がPHPをはじめた頃外の会社からできるプログラマが手伝いに来て言った「まずフレームワークをつくりましょう」13年5月29日水曜日
  • フレームワーク歴「フレームワーク?なにそれ?おいしいの?」13年5月29日水曜日
  • フレームワーク歴当時はまだRailsなど存在せずPHP界隈には、JavaのStrutsに影響をうけたフレームワークが出てきた頃かもという時代13年5月29日水曜日
  • フレームワーク歴フレームワークとは何かがんばって調べたMVC、アーキテクチャ設計、デザインパターン、etc ...13年5月29日水曜日
  • フレームワーク歴概念のすべてを理解しきれなかったけど「フレームワークってなんだかかっこいい!」13年5月29日水曜日
  • フレームワーク歴二人でフレームワークをつくった今思えばとても原始的なものだったけどフレームワークをつくるのはすごく楽しかったし、勉強になった13年5月29日水曜日
  • フレームワーク歴そんなこんなでフレームワークに関心を持つようになった13年5月29日水曜日
  • フレームワーク歴Railsが出た頃さわってみて、超すごい!と興奮したPHPでいいのないのかなかったつくったRailsのソースを読んでPHPでそれっぽく実装13年5月29日水曜日
  • フレームワーク歴自作フレームワーカーだったのでCakePHPとかCodeIgniter / FuelPHPとかSymfonyとかちゃんと使ったことない自作も大変なのでイイのに乗り換えたい願望13年5月29日水曜日
  • フレームワーク歴PHP歴 ≒ フレームワーク歴自作フレームワーク()メジャーどころはなんとなく知ってるけどちゃんと使ったことは無いまとめ13年5月29日水曜日
  • LARAVEL313年5月29日水曜日
  • LARAVEL3去年のちょうど今頃、HackerNewsでみかけたhttps://news.ycombinator.com/item?id=402942713年5月29日水曜日
  • LARAVEL3シンプルでクリーンな設計思想軽量だがひと通りの機能は っている拡張性(bundles)もあるが、13年5月29日水曜日
  • LARAVEL3Staticメソッド多用新しいフレームワークって色々不安命名規則が好みではないfunction action_index()とか13年5月29日水曜日
  • LARAVEL3なんか惜しいというかそんなにビビビッとこなかった名前はかわいいのだけれど・・・13年5月29日水曜日
  • LARAVEL3(́・ω・`)13年5月29日水曜日
  • LARAVEL3そして、ときは流れ…13年5月29日水曜日
  • LARAVEL413年5月29日水曜日
  • LARAVEL4最近、ふと思ったブログでも書こうどうせなら自分でつくろう全然プログラミングしてないしリハビリもかねて13年5月29日水曜日
  • LARAVEL4フレームワーク何にしよう?13年5月29日水曜日
  • LARAVEL4軽量系のフレームワークをいくつか試したSlimSilexPhalcon(micro)FuelPHP...13年5月29日水曜日
  • LARAVEL4Laravel4のベータが出ていたので試した13年5月29日水曜日
  • LARAVEL43の思い出(使ってないけど)13年5月29日水曜日
  • LARAVEL44をみてみたらびっくり3でイケてなかった点が悉く「解消」していた13年5月29日水曜日
  • LARAVEL4もちろん良かった点はそのままに13年5月29日水曜日
  • LARAVEL4「ららべる子?」「顔はかわいいんだけど」「ちょっとおてんばな性格がなぁ…」13年5月29日水曜日
  • LARAVEL4そんなららべる子と1年ぶりに偶然再開したら13年5月29日水曜日
  • LARAVEL4かわいらしさはそのままにとても品のよい子に成長していた ...!13年5月29日水曜日
  • HAPPY HACKINGwith Laravel413年5月29日水曜日
  • HAPPY HACKING楽しいって何か書いてて楽しい、嬉しいラクに書ける、シンプルで書きやすいわかりやすい、悩まない思い通りに操れる13年5月29日水曜日
  • HAPPY HACKING楽しいって何かプログラマーズハイ・高揚感スーパーハカーな気分マジカルな感じ・支配感ゆけおれのコードよ13年5月29日水曜日
  • HAPPY HACKINGLaravelにあるものしっかりした枠組みプログラミングを楽しくしてくれる仕組みプログラミングのレベルを底上げしてくれるような思想13年5月29日水曜日
  • HAPPY HACKINGIoC Containerによるパワフルで賢い依存性解決シンプルでクリーンな設計思想・記述軽量で追いやすいコアコード実績のある基盤(symfony component)柔軟性、拡張性13年5月29日水曜日
  • HAPPY HACKINGStaticメソッド多用IoC Container x Facadeにより解決しました新しいフレームワークって色々不安信頼と実績のSymfony Componentが基盤になりました命名規則が好みではない好みな感じ(PSR-1準拠)になりましたLaravel3のとき気になってたあれらはどうなったのか13年5月29日水曜日
  • HAPPY HACKINGもはやハッピーな感じしかしない13年5月29日水曜日
  • HAPPY HACKINGということでLaravel4でブログをつくってみました13年5月29日水曜日
  • POCHIKAポーチカ13年5月29日水曜日
  • POCHIKALaravel4でつくった軽量ブログエンジンデータベースは使わず、markdownファイルを変換jekyll風味(けどstatic file generatorではない)php的に動的に動作するキャッシュとかプラグインとか13年5月29日水曜日
  • POCHIKA使ってる機能RoutingConfigControllerError & LoggingCacheEventsIoC ContainerView / Templates / BladeUnit TestingArtisan CLIまだ使ってない機能Forms & HTMLDatabaseEloquent ORMLocalizationQueuesMailSecuritySessionValidation13年5月29日水曜日
  • http://github.com/ohida/pochikaPOCHIKA13年5月29日水曜日
  • LARAVEL413年5月29日水曜日
  • LARAVEL4IoC Container / FacadeIlluminate / composer / symfony componentspsr-0(autoload) / psr-1(coding standard)その他色々パワーアップ3からの変更点13年5月29日水曜日
  • LARAVEL4IoC Container... どのように依存性を解決するかFacade... シンプルで強力なインターフェイスおまけ:UnitTest... IoC ContainerとFacadeが必要な理由13年5月29日水曜日
  • IOC CONTAINER13年5月29日水曜日
  • IOC CONTAINERIoC ... Inversion of Control制御の逆転13年5月29日水曜日
  • IOC CONTAINER“The IoC container is at theheart of the entire applicationand all dependencies areresolved through that.”Taylor OtwellさんIoC Containerはアプリケーション全体における心臓部で、すべての依存性を解決します。13年5月29日水曜日
  • IOC CONTAINERThe Laravel inversion of control container is a powerful tool for managing classdependencies. Dependency injection is a method of removing hard-coded classdependencies. Instead, the dependencies are injected at run-time, allowing forgreater flexibility as dependency implementations may be swapped easily.http://four.laravel.com/docs/iocLaravelのIoCコンテナはクラス依存性解決のためのパワフルなツールです。DI(依存性の注入)はコードによるクラス解決を取り除き、代わりにアプリケーションの実行時に依存性を注入します。このことにより依存の実装を容易に入れ替えられるという柔軟性を得ることができます。13年5月29日水曜日
  • IOC CONTAINERBasic Usage13年5月29日水曜日
  • IOC CONTAINER$foo = new Foo;13年5月29日水曜日
  • IOC CONTAINER$foo = App::make(Foo);13年5月29日水曜日
  • IOC CONTAINERApp::bind(foo, function() { return new Foo;});$foo = App::make(foo);13年5月29日水曜日
  • IOC CONTAINER$view = new SmartyView;"App::bind(view, function() {$smarty = new SmartyView;$smarty->..return $smarty;});$view = App::make(view);13年5月29日水曜日
  • IOC CONTAINER$view = new TwigView;"App::bind(view, function() {return new TwigView([..]);});$view = App::make(view);13年5月29日水曜日
  • IOC CONTAINERクラスを「直接」呼ぶのではなくIoC Containerを通して「間接的」に呼び出す13年5月29日水曜日
  • IOC CONTAINERクラスが必要になった時IoC Containerさんがよしなにつくってくれる13年5月29日水曜日
  • IOC CONTAINER僕:IoCさん、僕がfeedくれっていったらAtomFeedのことですからよろしくですよIoCさん:(o e o)アイヨ∼そしてその時がきた∼僕:「feedくれ!」IoCさん:(o e o)つ アイヨ ∼【AtomFeed】13年5月29日水曜日
  • IOC CONTAINER登録App::bind(feed, function() { return new AtomFeed;});使う$feed = App::make(feed);echo $feed->generate(); //render xml/atom13年5月29日水曜日
  • IOC CONTAINER登録App::bind(feed, function() { return new RssFeed;});使う$feed = App::make(feed);echo $feed->generate(); //render xml/rss13年5月29日水曜日
  • IOC CONTAINERsingletonもIoCが解決App::singleton(foo, function(){return new FooBar;});13年5月29日水曜日
  • IOC CONTAINER既にあるインスタンスを登録することも$foo = new Foo;App::instance(foo, $foo);13年5月29日水曜日
  • IOC CONTAINERAutomatic ResolutionThe IoC container is powerful enough to resolveclasses without any configuration at all in manyscenarios.IoCコンテナは強力なので、多くの場合においてクラス解決のために何かをする必要はありません。13年5月29日水曜日
  • IOC CONTAINERclass FooBar {public function __construct(Baz $baz){$this->baz = $baz;}}$foobar = new FooBar(new Baz);13年5月29日水曜日
  • IOC CONTAINERclass FooBar {public function __construct(Baz $baz){$this->baz = $baz;}}$foobar = App::make(‘FooBar’);13年5月29日水曜日
  • IOC CONTAINERclass FooBar {public function __construct(PiyoInterface $baz){$this->baz = $baz;}}IoCさん (o e o)Interfaceかー 解決できねー...orzなんていうことはなく13年5月29日水曜日
  • IOC CONTAINERApp::bind(‘PiyoInterface’, Poyo);# PiyoInterfaceが呼ばれたらPoyoのことなんだからね13年5月29日水曜日
  • IOC CONTAINERclass FooBar {public function __construct(PiyoInterface $baz){$this->baz = $baz;}}App::bind(‘PiyoInterface’, Poyo);App::make(‘FooBar’);(o e o)/13年5月29日水曜日
  • IOC CONTAINERclass Eva {public function __construct(PilotInterface $pilot){$this->pilot = $pilot;}}App::bind(‘PilotInterface’, ‘Ayanami’)$eva = App::make(‘Eva’);# get_class($eva->pilot) == ‘Ayanami’13年5月29日水曜日
  • Practical Usage実用例IOC CONTAINER13年5月29日水曜日
  • IOC CONTAINERclass OrderController extends BaseController {public function __construct(OrderRepository $orders){$this->orders = $orders;}public function getIndex(){$all = $this->orders->all();return View::make(orders, compact(all));}}13年5月29日水曜日
  • IOC CONTAINER$orders = new OrderRepository();new OrderController($orders);App::bind(‘OrderRepository’, ‘MockOrders’)App::make(‘OrderControler’)普通に書くとデータベースへの接続が発生IoCを使うとスタブで置き換えられる13年5月29日水曜日
  • IOC CONTAINERIn this example, the OrderRepository class will automatically be injectedinto the controller. This means that when unit testing a "mock"OrderRepository may be bound into the container and injected into thecontroller, allowing for painless stubbing of database layer interaction.この例では、OrderRepositoryクラスは自動的にコントローラーに注入されます。このことは、ユニットテストの際にモックのOrderRepositoryクラスをコントローラに注入することができ、データベース操作部分のスタブ化が容易になることを意味しています。13年5月29日水曜日
  • IOC CONTAINERまとめIoCとは、Inversion Of Control(制御の逆転)よしなにクラスをつくってくれるよしなに依存関係を解決してくれるテストもしやすくなる13年5月29日水曜日
  • FACADE13年5月29日水曜日
  • Facade(ファサード)とは「建物の正面」を意味する。(wikipediaより)FACADE13年5月29日水曜日
  • FACADEなんの正面か = クラス13年5月29日水曜日
  • FACADEPage::find(about);13年5月29日水曜日
  • FACADEBehind the scene13年5月29日水曜日
  • FACADEclass Page {private static $pages;public static function find($name){return self::$pages[$name];}}# なるほどstaticね。Pageクラスの中身はこんな感じかなPage::find(about);13年5月29日水曜日
  • FACADEPage::find(about);class Page {private $pages;public function find($name){return $this->pages[$name];}}# ちがうよ。Pageクラスはstaticメソッド持ってないよ13年5月29日水曜日
  • FACADEPage::find(about);Pageクラスではなく、実はFacadeが呼ばれている13年5月29日水曜日
  • FACADEPage::method()って書いたら、普通はPageクラスがよばれるそして ”そのメソッドはstaticに呼べません”というエラーが出るFacadeを介すには?13年5月29日水曜日
  • FACADEPage::method()って書いたら、Facadeの方よんでねとLaravelに教えるapp/config/app.phpに書くaliases = [‘Page’ => ‘FacadesPage’,];13年5月29日水曜日
  • FACADE<?php namespace PochikaFacades;use IlluminateSupportFacadesFacade;class Page extends Facade {/*** Get the registered name of the component.** @return string*/protected static function getFacadeAccessor(){return page; // IoC Containerが解決できる名前}}13年5月29日水曜日
  • FACADEPage::find(‘about’);"Pageファサード"App::resolve(‘page’)->find(‘about’);13年5月29日水曜日
  • FACADE$this->input->get(‘hoge’);"Input::get(‘hoge‘);13年5月29日水曜日
  • FACADE$view = new View;$view->render(‘index.html’);"View::make(‘index.html’);13年5月29日水曜日
  • FACADEどこからでも単独で呼び出せる$thisって誰?を意識しない誰でもいいしいなくてもいい疎結合依存性、コンテキストの排除統一されたクリーンなインターフェイス$this->hogeだったりnew Fuga()だったりしない13年5月29日水曜日
  • FACADEまとめFacadeを利用することで、シンプルで強力なインターフェイスでクラスを扱うことができる13年5月29日水曜日
  • FACADELaravel4はIoC ContainerとFacadeがキモLaravel4使うなら最初に理解するべきポイント13年5月29日水曜日
  • FACADERouterRouter::get(‘/’,‘IndexController@index’);EventEvent::fire(‘post.converted’);ViewView::make(‘index.html’, $payload);13年5月29日水曜日
  • UNITTEST13年5月29日水曜日
  • UNITTESTテストしやすい/しにくいってなにかStaticメソッドでテストが難しいのはなぜか13年5月29日水曜日
  • UNITTESTUnitTestではテスト毎に初期化されることが前提前のテストの影響をうけるとまともなテストにならない13年5月29日水曜日
  • UNITTESTstaticオブジェクトにはconstructorとdestructorがない初期化処理と終了処理が行われない始まりと終わりがないひとつのテストによって生じた状態をクリアできない13年5月29日水曜日
  • UNITTESTfunction testEach(){PostRepository::each(function($post) {$post->title .= ‘:hoge’;});$this->assertHoge(..);}function testHoge(){$posts = PostRepository::load();↑ testEachの処理を経た状態になっている..}class PostRepository {private static $posts = [];public static function load(){return self::$posts;}public static function each ($func){array_walk(self::$posts, $func);}}テストクラス13年5月29日水曜日
  • まとめ13年5月29日水曜日
  • まとめLaravel4は3のときのよさ(クリーンさとか)はそのままにIoC Containerとかcomposerで中身がおとなになったテストもしやすい(規模に関わらずテストは必要)PHPもここまで来たかくらいイケてる感じで書ける13年5月29日水曜日
  • LARAVEL4たのしい☆彡のでみんなつかおう(自分に合うかは見極めよう)13年5月29日水曜日
  • 13年5月29日水曜日
  • http://solvalou.net/http://twitter.com/ohidahttp://www.facebook.com/takashi.ohidahttp://github.com/ohidaTakashi Ohida13年5月29日水曜日