ここがすごい! なぞとPHP5.3

2,027 views
1,954 views

Published on

LOCAL PHP勉強会09

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

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

No notes for slide

ここがすごい! なぞとPHP5.3

  1. 1. ここがすごい!なぞとPHP5.3 <br />佐藤琢哉<br />LOCAL PHP部<br />
  2. 2. はじめに<br />
  3. 3. なぞはすごくないです!!!<br />
  4. 4. 自己紹介<br />佐藤琢哉 aka nazo<br />旭川->東京->札幌<br />LOCAL PHP部<br />Hatena : nazone<br />twitter : nazo<br />
  5. 5. アジェンダ<br />PHP5.3おさらい<br />lithiumについて<br />
  6. 6. PHP5.3おさらい<br />
  7. 7. 何が変わった5.3?<br />名前空間<br />staticメソッドに関する追加機能<br />goto<br />無名関数<br />Phar<br />その他細かい変更<br />
  8. 8. 名前空間<br />¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥<br />名前空間を解決するための仕組み<br />namespaceで囲む<br />useで宣言すると省略できる<br />
  9. 9. staticメソッドに関する追加機能<br />遅延静的束縛(late static binding)<br />呼び出し方法によって実行するメソッドを実行時に切り替える<br />動的静的呼び出し(Dynamic Static Call)<br />$a::foo();<br />なぜ今までできなかったのかが謎<br />__callStatic<br />__callのstatic版<br />O/Rマッパーとかで効果が出てくると思われる?<br />
  10. 10. goto<br />使うな!!!<br />
  11. 11. 無名関数(lambda)<br />JavaScriptやってる人ならおなじみ<br />無名関数≠クロージャ(よく間違えられる)<br />lambdaと呼ぶのはLisp方面が元ネタらしい<br />従来create_functionで一応作れたが、非常に面倒だった<br />クロージャ:無名(に限らないが)関数内の変数を解決するときに、その関数が定義されたスコープでの変数を参照する仕組み<br />
  12. 12. Phar<br />PHPのソースをtarとかzipで固めて、それをそのままPHPからincludeできるようにする仕組み<br />Pythonのeggみたいなやつ(?)<br />
  13. 13. 細かい変更<br />公式のドキュメントを読めば何が非推奨かとか書いてあるから、ある程度はそこをチェックしながら<br />微妙に互換性のない修正もあるので、なんか変だと思ったらチェックしてみよう<br />PHP5な書き方をしていればそこまで変にはならない<br />
  14. 14. インストール<br />基本的にソースから入れるのがいい<br />WindowsならXAMPPを入れれば最初から5.3になる<br />でも5.3メインで開発することはまだ少ない気がする<br />debian、ubuntu系ならdotdebにパッケージがある(が、入れると当然5.2は消える)<br />
  15. 15. インストール<br />5.3.2はビルド時にSEGVを出すバグがあるっぽいので、5.3.1を入れたほうがいいかも(詳細不明)<br />http://bugs.php.net/bug.php?id=51216<br />
  16. 16. lithiumについて<br />
  17. 17. lithiumってなに?<br />PHP5.3専用フレームワーク<br />CakePHPを作っていたGarrett WoodworthとかNate Abeleとかって人がCakePHPプロジェクトから離脱して作り始めた<br />CakePHPっぽさが随所に残っている<br />まだ正式版ではない<br />http://rad-dev.org/<br />
  18. 18. 主な特徴<br />PHP5.3専用<br />MongoDBなどのDBにも対応(むしろ推奨している印象)<br />CakePHPっぽく書けるが先進的な機能も豊富<br />フィルタ機能で好きなところを改造できる<br />
  19. 19. ダウンロードインストール<br />
  20. 20. ダウンロード<br />http://rad-dev.org/lithium/wiki/drafts/blog-tutorialを参考に<br />ここで見るとMongoDBを使っているが、今回はMySQLで行う<br />http://rad-dev.org/lithium/versionsからダウンロードして解凍<br />
  21. 21. 初期設定<br />フォルダ構成はCakePHPそっくり<br />若干違う箇所もあるが<br />URLがルートでない場合はCakePHP同様.htaccessでRewriteBaseを設定<br />app/resourcesをwritableにする<br />config/bootstrap.phpのconnections.phpをrequireしてるところのコメントアウトを解除<br />config/connections.phpを編集<br />DB設定<br />
  22. 22. テーブル<br />create table posts (<br /> id integer unsigned not null auto_increment,<br /> title varchar(255),<br /> body text,<br /> primary key(id)<br />);<br />
  23. 23. MVC作成<br />
  24. 24. app/models/Post.php<br /><?php<br />namespace appmodels;<br />class Post extends lithiumdataModel {<br />}<br />
  25. 25. app/controllers/PostsController.php<br /><?php<br />namespace appcontrollers;<br />class PostsController extends lithiumactionController {<br />}<br />
  26. 26. app/views/posts/index.html.php<br />(普通のHTML)<br />
  27. 27. MVC作成<br />controllerからviewに値を渡すには、controllerでkey=>valueの形式でreturnする<br />compactを使うのがおすすめ<br />
  28. 28. MVC作成<br />viewの拡張子は.html.php<br />viewではshort_open_tagの設定に限らず、<?=$foo?>書式が使える<br />なんと自動でHTMLエスケープ機能付き<br />ちなみにエスケープされたくない場合は<?php echo $foo?><br />なぜかHelperは自動エスケープされない不思議<br />nl2brは普通にやるしかない(と思う)<br />
  29. 29. CRUDを作ってみる<br />
  30. 30. Model<br />Model周りはそこまで調べてないので省略<br />namespaceで使うモデルを定義<br />別にしなくても使えるけど定義したほうが楽<br />
  31. 31. Helper<br />Helperは$thisから参照すること<br />$this->html->link(...)<br />
  32. 32. まとめ<br />
  33. 33. まとめ<br />lithiumは開発がもりもり進んでいるので、そのうち実用的になる<br />その日に向けて勉強しておくのはいいかも<br />今はまだ実用は厳しいかも(ドキュメントが少なすぎ)<br />lithiumが出てきたらPHP5.3が本番!という感じがする<br />他に使う理由があまり無い<br />追加機能は便利ではあるが…<br />
  34. 34. おわり<br />

×