Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lithium Labo #1

4,418 views

Published on

  • Be the first to comment

Lithium Labo #1

  1. 1. Lithiumラボ #1 超先進的フレームワーク 2010/01/30 yandod 1
  2. 2. 自己紹介 name Yusuke Ando aka, yandod PHPについて書いたり喋ったり CakePHP evengelist. I love Beatles. RedmineをCakePHPに移植中 久しぶりに技術の話をします 2
  3. 3. ‚The Origin of Lithium‛ at NYPHP 3
  4. 4. アジェンダ Lithiumとは 機能の特徴とデモ まとめ Copyright © YusukeAndo. 2010 - . All rights reserved. 4
  5. 5. Lithiumとは 由来と背景 Copyright © YusukeAndo. 2010 - . All rights reserved. 5
  6. 6. Lithiumの基本 PHP5.3以降用フレームワーク クオリティ、速度、柔軟性を追求 分散ストレージ、キュー、ドキュメント指向DBを MySQLなどと同等に積極利用 以前はcake3と呼ばれてた Copyright © YusukeAndo. 2010 - . All rights reserved. 6
  7. 7. Cake3から別プロジェクトに派生 Copyright © YusukeAndo. 2010 - . All rights reserved. 7
  8. 8. Gwoo & Nate ! Copyright © YusukeAndo. 2010 - . All rights reserved. 8
  9. 9. もうすこし詳しく 12人のデベロッパが開発に参加中 現在のバージョンは0.5 コードの雰囲気はCakePHP風 MongoDB、Doctrine、Zendなどとの連携例あり ユニットテストコンソール、コマンドライン CakePHPの教訓を生かした改良(ORマッパ、View) 表面的な機能は軽いジャブ 9
  10. 10. Comparison isn’t matter. Copyright © YusukeAndo. 2010 - . All rights reserved. 10
  11. 11. The Beatles said… You can celebrate anything you want, You can penetrate any place you to go, ‚Dig a Pony‛ 何でも好きなものを賞賛すればいい、 何処でも好きな所に突き進めばいい。 http://www.youtube.com/watch?v=tqcJCiFTdwY 11
  12. 12. Nate said… A lot of things are superficial. ほとんどの事柄は表面的な事に過ぎない 12
  13. 13. ならば何を言いたいのか ・・・・・ 13
  14. 14. Lithiumの本質は? PHP5.3 拡張性(flexibility) 14
  15. 15. 機能の特徴とデモ 雰囲気を体験 Copyright © YusukeAndo. 2010 - . All rights reserved. 15
  16. 16. インストール PHP5.3の環境が必要 (XAMPPでもよい) MongoDBもしくはCouchDBが良い 公式サイトからダウンロードして置くだけ http://rad-dev.org/lithium/versions DB設定は app/config/connections.php チュートリアルもあり http://rad-dev.org/lithium/wiki/drafts/blog- tutorial CakePHP的な簡単セットアップ 16
  17. 17. app/config/connections.php ネームスペースの インポート use ¥lithium¥data¥Connections; Connections::add('default', 'database', array( 'adapter' => 'MySql', 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'lithium-blog' )); Copyright © YusukeAndo. 2010 - . All rights reserved. 17
  18. 18. 初期画面 Copyright © YusukeAndo. 2010 - . All rights reserved. 18
  19. 19. ブログチュートリアル PostsController から Postモデルを呼ぶ Viewはphpで書く データベースのデータは今回は先に入れておく Namespaceの記述などが頻出する コードの分量はCakePHPよりもさらに少なく 19
  20. 20. app/models/Post.php <?php ネームスペースの 指定 namespace app¥models; class Post extends ¥lithium¥data¥Model { 基底クラスもネー } ムスペースを指定 Copyright © YusukeAndo. 2010 - . All rights reserved. 20
  21. 21. app/controllers/PostsController.php <?php namespace app¥controllers; ネームスペースの インポート・指定 use app¥models¥Post; class PostsController extends ¥lithium¥action¥Controller { public function index(){ $posts = Post::all(); Viewへ変数を return compact('posts'); return } } Copyright © YusukeAndo. 2010 - . All rights reserved. 21
  22. 22. app/views/posts/index.html.php <?php foreach($posts as $post): ?> <article> <h1><?=$post->title ?></h1> <p><?=$post->body ?></p> </article> エスケープは自動 <?php endforeach; ?> Copyright © YusukeAndo. 2010 - . All rights reserved. 22
  23. 23. 実行結果 Copyright © YusukeAndo. 2010 - . All rights reserved. 23
  24. 24. 拡張性はどこに? コアライブラリがほぼ完全に分離されている 静的遅延束縛でstaticも拡張できる Librariesクラスを使って追加、変更が可能 超先進的なフィルタ機能が使える コールバックに頼らない拡張 サブクラスを作る必要もない 24
  25. 25. フィルタ機能 基底クラス Object StaticObjectに備わっている applyFilterメソッドで対象のメソッドと処理を指定 処理はクロージャで指定 処理の最後で次のフィルタをコールしてreturn どうにかオブジェクトを引っ張りだせば設定可能 $object->applyFilter(‘hoge’, クロージャ); 25
  26. 26. クエリのログを出してみる ¥lithium¥data¥Connections::get('default')- >applyFilter('_execute', function($self,$params,$chain){ echo $params['sql']."<br/>"; return $chain->next( クロージャで動作 $self, $params, $chain); を指定できる }); Copyright © YusukeAndo. 2010 - . All rights reserved. 26
  27. 27. 実行結果 Copyright © YusukeAndo. 2010 - . All rights reserved. 27
  28. 28. これが意味するところは ありえないほど超簡単に フレームワークが拡張できる 28
  29. 29. まとめ Lithiumは軽量さと拡張性を追求している 他のライブラリやフレームワークと接続も容易 PHP5.3の機能を徹底的に使っている 静的遅延束縛 ネームスペース クロージャ 開発は猛スピードで進行中 29
  30. 30. フレームワークの枠を超えて PHPの未来へ突き進もう! 30
  31. 31. 参考 Lithium Project http://rad-dev.org/ Candycane development blog http://blog.candycane.jp/ 31
  32. 32. 質疑応答 ご静聴ありがとうございました。 Business ninja @ shownimals http://www.shawnimals.com/characters/709 Copyright © YusukeAndo. 2010 - . All rights reserved. 32

×