Samurai Frameworkに関して<br />
開発者紹介<br />
開発者紹介<br />名前: 木内智史之介<br />経歴:<br />北諏訪小学校 -> 引っ越し -> 荒幡小学校<br />山口中学校<br />所沢高等学校<br />東京マルチメディア専門学校<br />株式会社ジェイケン(現在はドリ...
株式会社BEFOOL紹介<br />http://befool.co.jp/<br />資本金: 5万<br />
会社紹介②<br />代表からのメッセージ<br />
Samurai Frameworkの紹介<br />本題の前に<br />
Samurai Frameworkってなに?<br />PHPのフルスタックフレームワークです。<br />Mapleから派生しました。<br />Mapleって?<br />4~5年前くらいにEthna、symfonyと並んで紹介されていたフ...
Samurai Framework WEBサイト<br />http://samurai-fw.org/<br />  ( ゚д゚)       _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />
Samurai Framework WEBサイト<br />  ( ゚д゚)       _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />  ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <...
Samurai Framework WEBサイト<br />(´;ω;`)ブワッ<br />よろしくおねがいいたします<br />
Samurai Frameworkの処理概要に関して<br />今日の本題<br />
処理の全体像<br />Controller<br />ActionChain<br />FilterChain<br />
FilterChainの流れ<br />クライアント(ブラウザ)<br />Filter1<br />Filter2<br />Filter3<br />prefilter<br />postfilter<br />Filter4<br />F...
Filterの種類<br />Convert (リクエストパラメータの変換)<br />Validate (入力チェック)<br />Auth (認証)<br />Token (リクエストの簡易チェック)<br />DIContainer (D...
Debugフィルター紹介<br />Debug情報を表示します<br />
ディレクトリ構成<br />bin/<br />component/<br />action/<br />filter/<br />config/<br />samurai/<br />activegateway/<br />routing/<...
他フレームワークと大きく違う点<br />DIContainer<br />S2Container.PHP<br />他には…?<br />Actionが固有のクラス<br />
Samurai Frameworkでの開発の流れ<br />
インストール方法<br />pearコマンド利用します<br /># pear channel-discover pear.samurai-fw.org<br /># pear install –f samurai/Samurai<br />#...
プログラミングの流れ<br />add-projectする<br />while(1){<br />add-specする<br />add-componentする<br />samurai.diconに追加する<br />失敗 / 成功<br ...
閑話:PHPSpecに関して<br />Samurai FrameworkではSpecのRunnerとしてPHPSpecを採用しているのですが…<br />PHPSpecって開発停止している…よね…?<br />なぜ採用したし…<br />PH...
DIContainerに関して<br />
DIContainerって?<br />DependencyInjection(依存性注入)<br />クラスは多くの場合他クラスに依存するもの<br />その依存性の解決を個々のクラスに任せるのは大変<br />初期化の方法が変わればnewし...
DIContainerの書き方<br />samurai.dicon<br />foo/Manager.class.php<br />FooManager:<br />   class: Foo_Manager<br />BarManager:...
いくつかのクラス初期化方法をサポート<br />通常<br />setter<br />FooManager:<br />   class: Foo_Manager<br />FooManager:<br />   class: Foo_Man...
今後の展開<br />
今後に関して<br />国際化対応<br />携帯関連をサポート<br />絵文字の相互変換など<br />SPECランナーをラップ<br />ActiveGatewayの名前を考える<br />
ライバル<br />cakePHP<br />なめんなこら!<br />symfony<br />やんのかこら!<br />ZendFramework<br />腰抜かしてやんよ!<br />CodeIgniter<br />おらおらー<br ...
ご静聴ありがとうございました。<br />
Upcoming SlideShare
Loading in …5
×

Samurai Framework 紹介

1,148 views

Published on

PHP勉強会にて発表させていただいた内容。
初めての発表ということもあり、簡単な紹介です。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,148
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Samurai Framework 紹介

  1. 1. Samurai Frameworkに関して<br />
  2. 2. 開発者紹介<br />
  3. 3. 開発者紹介<br />名前: 木内智史之介<br />経歴:<br />北諏訪小学校 -> 引っ越し -> 荒幡小学校<br />山口中学校<br />所沢高等学校<br />東京マルチメディア専門学校<br />株式会社ジェイケン(現在はドリコムに吸収合併されました)<br />独立 -> 株式会社BEFOOL<br />
  4. 4. 株式会社BEFOOL紹介<br />http://befool.co.jp/<br />資本金: 5万<br />
  5. 5. 会社紹介②<br />代表からのメッセージ<br />
  6. 6. Samurai Frameworkの紹介<br />本題の前に<br />
  7. 7. Samurai Frameworkってなに?<br />PHPのフルスタックフレームワークです。<br />Mapleから派生しました。<br />Mapleって?<br />4~5年前くらいにEthna、symfonyと並んで紹介されていたフレームワーク<br />2年前くらいにMaple4を作ろうという流れに<br />その際にコミッタになりました<br />Maple4は残念ながら開発は事実上の停止状態にあります<br />Mapleの基本的な理念を引き継いでいます<br />Maple4開発時の議論に上がった内容を、(主にDIContainer部分に関して)取り入れています。<br />DIContainerを軸に動作します<br />O/RマッパーActiveGatewayを備えています<br />PHPSpecを利用したしたテスト機構を備えています<br />
  8. 8. Samurai Framework WEBサイト<br />http://samurai-fw.org/<br />  ( ゚д゚)       _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />
  9. 9. Samurai Framework WEBサイト<br />  ( ゚д゚)       _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />  ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />  ( ゚д゚)       _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />  ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_   \/    /      ̄ ̄ ̄ <br />
  10. 10. Samurai Framework WEBサイト<br />(´;ω;`)ブワッ<br />よろしくおねがいいたします<br />
  11. 11. Samurai Frameworkの処理概要に関して<br />今日の本題<br />
  12. 12. 処理の全体像<br />Controller<br />ActionChain<br />FilterChain<br />
  13. 13. FilterChainの流れ<br />クライアント(ブラウザ)<br />Filter1<br />Filter2<br />Filter3<br />prefilter<br />postfilter<br />Filter4<br />Filter5<br />Action<br />
  14. 14. Filterの種類<br />Convert (リクエストパラメータの変換)<br />Validate (入力チェック)<br />Auth (認証)<br />Token (リクエストの簡易チェック)<br />DIContainer (DIContainer初期化)<br />ActiveGateway (ActiveGateway利用準備)<br />View (テンプレートの表示など)<br />Debug (デバッグ情報の表示)<br />などなど、Samurai Frameworkでは多くの処理をFilterで実装しています。<br />
  15. 15. Debugフィルター紹介<br />Debug情報を表示します<br />
  16. 16. ディレクトリ構成<br />bin/<br />component/<br />action/<br />filter/<br />config/<br />samurai/<br />activegateway/<br />routing/<br />library/<br />locale/<br />log/<br />migrate/<br />db/<br />skeleton/<br />spec/<br />temp/<br />template/<br />www/<br />
  17. 17. 他フレームワークと大きく違う点<br />DIContainer<br />S2Container.PHP<br />他には…?<br />Actionが固有のクラス<br />
  18. 18. Samurai Frameworkでの開発の流れ<br />
  19. 19. インストール方法<br />pearコマンド利用します<br /># pear channel-discover pear.samurai-fw.org<br /># pear install –f samurai/Samurai<br /># samurai<br />Usage:<br /> samurai [option] [command] [command-option] [args...]<br />Options:<br /> --version, -[vV] Print version and exit successfully.<br /> --help, -[hH] Print this help and exit successfully.<br />Commands:<br /> add-project Add Project.<br /> add-application Add Application.<br /> add-action Add Action.<br /> add-template Add Template.<br />
  20. 20. プログラミングの流れ<br />add-projectする<br />while(1){<br />add-specする<br />add-componentする<br />samurai.diconに追加する<br />失敗 / 成功<br />}<br />while(1){<br />add-actionする<br />}<br />
  21. 21. 閑話:PHPSpecに関して<br />Samurai FrameworkではSpecのRunnerとしてPHPSpecを採用しているのですが…<br />PHPSpecって開発停止している…よね…?<br />なぜ採用したし…<br />PHPSpecのようなBDDフレームワークってほかにないですかー?<br />
  22. 22. DIContainerに関して<br />
  23. 23. DIContainerって?<br />DependencyInjection(依存性注入)<br />クラスは多くの場合他クラスに依存するもの<br />その依存性の解決を個々のクラスに任せるのは大変<br />初期化の方法が変わればnewしてる箇所すべてに影響がでる<br />クラス名の変更が容易ではない<br />モッククラスを適当に用意しておくことがしづらい<br />クラス間の依存関係が見えづらい<br />DIContainerが解決!<br />SomeManager:<br /> class: Mock_Some_Manager<br />function initMethod()<br />{<br /> $this->SomeComponent = new SomeComponent();<br /> $module = $this->loadModule(‘some’);<br />}<br />SomeManager:<br /> class: Some_Manager<br />
  24. 24. DIContainerの書き方<br />samurai.dicon<br />foo/Manager.class.php<br />FooManager:<br /> class: Foo_Manager<br />BarManager:<br /> class: Bar_Manager<br />ZooManager:<br /> class: Zoo_Manager<br />class Foo_Manager<br />{<br /> public $BarManager;<br /> public $ZooManager;<br />}<br />自動的に差し込んでくれる<br />
  25. 25. いくつかのクラス初期化方法をサポート<br />通常<br />setter<br />FooManager:<br /> class: Foo_Manager<br />FooManager:<br /> class: Foo_Manager<br /> setter:<br /> db: $DB<br />毎回新しいインスタンスを取得<br />初期化メソッド<br />FooManager:<br /> class: Foo_Manager<br /> instance: prototype<br />FooManager:<br /> class: Foo_Manager<br /> initMethod: init<br /> args: [$DB]<br />コンストラクタに引数<br />FooManager:<br /> class: Foo_Manager<br /> args: [1, 2, $BarManager]<br />
  26. 26. 今後の展開<br />
  27. 27. 今後に関して<br />国際化対応<br />携帯関連をサポート<br />絵文字の相互変換など<br />SPECランナーをラップ<br />ActiveGatewayの名前を考える<br />
  28. 28. ライバル<br />cakePHP<br />なめんなこら!<br />symfony<br />やんのかこら!<br />ZendFramework<br />腰抜かしてやんよ!<br />CodeIgniter<br />おらおらー<br />Ethna<br />おらおらー<br />
  29. 29. ご静聴ありがとうございました。<br />

×