FukuokaPHP 3

3,707 views
3,727 views

Published on

FukuokaPHP Vol3

PHPMatsuri
Copy on Write
Interesting articles
Stream Wrapper

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

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

No notes for slide

FukuokaPHP 3

  1. 1. PHP 2012/9/28FukuokaPHP #3
  2. 2. Yasushi Ichikawa@cakephper / @ichikawayhttp://d.hatena.ne.jp/cakephper
  3. 3. 明日発売!! CakePHP2 実践入門  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  4. 4. 目次1. PHPMatsuri2. Copy on Write3. 面白かった記事紹介4. Stream Wrapper @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  5. 5. PHP 祭り11/3( 土 )10:00 – 4( 日 ) 16:00Ruby コンテンツセンター http://www.phpmatsuri.net/2012/@phpmatsuri@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  6. 6. PHP 祭りサイトは github pages で運用多少、動的な要素も扱える ブラウザキャッシュ 1 日・・・@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  7. 7. Copy on Write (CoW)
  8. 8. Copy on Write$a = FukuokaPHP;$b = $a; //$b は $a を参照してるだけ $b = $b . AWESOME!;// ここで初めて $b に値がコピーされる@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  9. 9. Copy on Write関数に渡した変数は? function func($x=null) { $x[1] = 21;   } ここで実コピー $a = range(1,100); func($a);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  10. 10. Copy on Writeクラスに渡した変数は? class Foo { public function bar($x = null){ $x[1] = 21;  }} ここで実コピー $a = range(1,100); $foo = new Foo(); $foo->bar($a);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  11. 11. Copy on Write関数やクラスに渡した変数は、その中の処理で書き換えなければ実コピーされず メモリ消費しない@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  12. 12. 最近面白かった記事
  13. 13. PHP5.5 ??http://nikic.github.com/2012/07/10/What-PHP-5-5-might-look-like.html  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  14. 14. PHP は現実的http://nikic.github.com/2012/06/29/PHP-solves-problems-Oh-and-you-can-program-with-it-too.html @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  15. 15. PHP は現実的People come to PHP because theyhave some problem and they needto solve it. This is what PHP reallyshines at. 問題を持っていて解決したい人が、まずPHP の世界に足を踏み入れてくるそれこそが PHP の素晴らしさだ@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  16. 16. PHP は現実的問題を解決するために簡単なスクリプトから始まって、 DB アクセスしたり、 OOP 覚えたり、フレームワーク使う ようになる覚えてから問題を探すというアプローチじゃないのが良い!@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  17. 17. PHP は現実的PHPは進化しているバッシングする人の大半はささいなことか、 PHP4 の時代のイメージを引きずったまま 引数の順序を覚えるのは IDE にやらせれば良い@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  18. 18. 君が思うよりも PHP はずっと素敵http://fabien.potencier.org/article/64/php-is-much-better-than-what-you-think By Fabien さん (Symfony 作者)@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  19. 19. 君が思うよりも PHP はずっと素敵The biggest problem of these rantsis that they come from peoplestuck in the old days of PHP.  一番の問題は、昔の PHP のイメージのままバッシングしてくることだ@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  20. 20. 君が思うよりも PHP はずっと素敵PHP is probably not the bestdesigned language in the world,but it lets you get things done, andyou cant argue with that. 世界最高の言語設計ではないのだろうけど、何かを成し遂げる道具になっているはずだ(反論はないだろ?)@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  21. 21. 君が思うよりも PHP はずっと素敵PHP5.3 名前空間 , クロージャPHP5.4  Trait, 組込み Web サーバ , [] 配列@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  22. 22. 君が思うよりも PHP はずっと素敵EcoSystem Git, Composer, Collaboration Sharing code@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  23. 23. 君が思うよりも PHP はずっと素敵 PHP is the best web platform...   ever.@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  24. 24. PHP The Right Way.http://ja.phptherightway.com/http://www.phptherightway.com/ ベストプラクティス集@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  25. 25. StreamWrapper
  26. 26. Motivation ●View ファイルの内容を DB に入れて管理したい ● View ファイルには html タグ、 php コードが混在 ●ファイルの場合は、 include すれば html/php がレン ダリングされて出力 (include hoge.php)@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  27. 27. Motivation ● DB 内のファイルの内容を入れた変数を include し たい! <- これどうやるの? $data = hello <?php echo "world"; ?>; include($data);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  28. 28. Stream ●PHP のストリーム ● ファイルの入出力のように様々なプロトコルを透過 的に扱う仕組み ● fopen(http://example.com/foo/bar); ● fopen(file://foo/bar.txt);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  29. 29. Stream ●PHP のストリーム ● ftp:// ● php:// ● zlib:// ● data:// ● ssh2:// ● php://memory@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  30. 30. Stream ●PHP のストリーム ● data:// の text/plain で実現できそう$data = hello <?php echo "world"; ?>;include(data://text/plain, .$data);php.ini の下記条件が必須allow_url_fopen = ONallow_url_include = ON@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  31. 31. Stream ●PHP のストリームを自作することに ● https://gist.github.com/1832549// app/vendors/variable_stream.php ●App::import(Vendor, VariableStream);stream_wrapper_register("var", "VariableStream");$val = Hello <?php echo "World"; ?>;include("var://".urlencode($val));// 内部で urldecode している@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  32. 32. Stream ●PHP のストリームに必須なメソッド ● url_stat() ● stream_stat() ● stream_open() 変数の読込み ● stream_read()  読込んだ変数を返す ● stream_tell()   読込んだポジション ● stream_eof()   読込み終了判定@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper

×