0
Lithiumラボ #1
超先進的フレームワーク




          2010/01/30 yandod
                              1
自己紹介

name Yusuke Ando aka, yandod
PHPについて書いたり喋ったり
CakePHP evengelist.
I love Beatles.
RedmineをCakePHPに移植中


     久しぶりに技術の...
‚The Origin of Lithium‛ at NYPHP




                                   3
アジェンダ


   Lithiumとは
   機能の特徴とデモ
   まとめ




Copyright © YusukeAndo. 2010 - . All rights reserved.   4
Lithiumとは
由来と背景




Copyright © YusukeAndo. 2010 - . All rights reserved.   5
Lithiumの基本




     PHP5.3以降用フレームワーク
     クオリティ、速度、柔軟性を追求
     分散ストレージ、キュー、ドキュメント指向DBを
     MySQLなどと同等に積極利用
     以前はcake3と...
Cake3から別プロジェクトに派生




Copyright © YusukeAndo. 2010 - . All rights reserved.   7
Gwoo & Nate !




Copyright © YusukeAndo. 2010 - . All rights reserved.   8
もうすこし詳しく

12人のデベロッパが開発に参加中
現在のバージョンは0.5
コードの雰囲気はCakePHP風
MongoDB、Doctrine、Zendなどとの連携例あり
ユニットテストコンソール、コマンドライン
CakePHPの教訓を生か...
Comparison isn’t matter.




Copyright © YusukeAndo. 2010 - . All rights reserved.   10
The Beatles said…


You can celebrate anything you want,
You can penetrate any place you to go,
                          ...
Nate said…




A lot of things are superficial.


  ほとんどの事柄は表面的な事に過ぎない


                                   12
ならば何を言いたいのか




      ・・・・・

              13
Lithiumの本質は?




         PHP5.3

拡張性(flexibility)
                   14
機能の特徴とデモ
雰囲気を体験




Copyright © YusukeAndo. 2010 - . All rights reserved.   15
インストール

PHP5.3の環境が必要 (XAMPPでもよい)
MongoDBもしくはCouchDBが良い
公式サイトからダウンロードして置くだけ
http://rad-dev.org/lithium/versions
DB設定は app/c...
app/config/connections.php
                                                         ネームスペースの
                             ...
初期画面




Copyright © YusukeAndo. 2010 - . All rights reserved.   18
ブログチュートリアル

PostsController から Postモデルを呼ぶ
Viewはphpで書く
データベースのデータは今回は先に入れておく
Namespaceの記述などが頻出する
コードの分量はCakePHPよりもさらに少なく


...
app/models/Post.php


<?php                                                       ネームスペースの
                               ...
app/controllers/PostsController.php


<?php
namespace app¥controllers; ネームスペースの
                           インポート・指定
use ap...
app/views/posts/index.html.php


<?php foreach($posts as $post): ?>
<article>
<h1><?=$post->title ?></h1>
<p><?=$post->bod...
実行結果




Copyright © YusukeAndo. 2010 - . All rights reserved.   23
拡張性はどこに?

コアライブラリがほぼ完全に分離されている
 静的遅延束縛でstaticも拡張できる
Librariesクラスを使って追加、変更が可能
超先進的なフィルタ機能が使える
 コールバックに頼らない拡張
 サブクラスを作る必要もない...
フィルタ機能

 基底クラス Object StaticObjectに備わっている
 applyFilterメソッドで対象のメソッドと処理を指定
 処理はクロージャで指定
 処理の最後で次のフィルタをコールしてreturn
 どうにかオブジェク...
クエリのログを出してみる


¥lithium¥data¥Connections::get('default')-
>applyFilter('_execute',
function($self,$params,$chain){
     ec...
実行結果




Copyright © YusukeAndo. 2010 - . All rights reserved.   27
これが意味するところは




 ありえないほど超簡単に
フレームワークが拡張できる


                28
まとめ

Lithiumは軽量さと拡張性を追求している
 他のライブラリやフレームワークと接続も容易
PHP5.3の機能を徹底的に使っている
 静的遅延束縛
 ネームスペース
 クロージャ
開発は猛スピードで進行中

             ...
フレームワークの枠を超えて
PHPの未来へ突き進もう!


                30
参考

Lithium Project
 http://rad-dev.org/
Candycane development blog
http://blog.candycane.jp/




                        ...
質疑応答




                 ご静聴ありがとうございました。




                       Business ninja @ shownimals
                       ht...
Upcoming SlideShare
Loading in...5
×

Lithium Labo #1

3,918

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,918
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×