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.

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

2,359 views

Published on

LOCAL PHP勉強会09

Published in: Technology
  • Be the first to comment

ここがすごい! なぞと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 />

×