Your SlideShare is downloading. ×
FukuokaPHP 3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

FukuokaPHP 3

1,539
views

Published on

FukuokaPHP Vol3 …

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
1,539
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PHP 2012/9/28FukuokaPHP #3
  • 2. Yasushi Ichikawa@cakephper / @ichikawayhttp://d.hatena.ne.jp/cakephper
  • 3. 明日発売!! CakePHP2 実践入門  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 4. 目次1. PHPMatsuri2. Copy on Write3. 面白かった記事紹介4. Stream Wrapper @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 5. PHP 祭り11/3( 土 )10:00 – 4( 日 ) 16:00Ruby コンテンツセンター http://www.phpmatsuri.net/2012/@phpmatsuri@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 6. PHP 祭りサイトは github pages で運用多少、動的な要素も扱える ブラウザキャッシュ 1 日・・・@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 7. Copy on Write (CoW)
  • 8. Copy on Write$a = FukuokaPHP;$b = $a; //$b は $a を参照してるだけ $b = $b . AWESOME!;// ここで初めて $b に値がコピーされる@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 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. 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. Copy on Write関数やクラスに渡した変数は、その中の処理で書き換えなければ実コピーされず メモリ消費しない@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 12. 最近面白かった記事
  • 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. 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. 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. PHP は現実的問題を解決するために簡単なスクリプトから始まって、 DB アクセスしたり、 OOP 覚えたり、フレームワーク使う ようになる覚えてから問題を探すというアプローチじゃないのが良い!@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 17. PHP は現実的PHPは進化しているバッシングする人の大半はささいなことか、 PHP4 の時代のイメージを引きずったまま 引数の順序を覚えるのは IDE にやらせれば良い@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 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. 君が思うよりも 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. 君が思うよりも 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. 君が思うよりも PHP はずっと素敵PHP5.3 名前空間 , クロージャPHP5.4  Trait, 組込み Web サーバ , [] 配列@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 22. 君が思うよりも PHP はずっと素敵EcoSystem Git, Composer, Collaboration Sharing code@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 23. 君が思うよりも PHP はずっと素敵 PHP is the best web platform...   ever.@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 24. PHP The Right Way.http://ja.phptherightway.com/http://www.phptherightway.com/ ベストプラクティス集@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 25. StreamWrapper
  • 26. Motivation ●View ファイルの内容を DB に入れて管理したい ● View ファイルには html タグ、 php コードが混在 ●ファイルの場合は、 include すれば html/php がレン ダリングされて出力 (include hoge.php)@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 27. Motivation ● DB 内のファイルの内容を入れた変数を include し たい! <- これどうやるの? $data = hello <?php echo "world"; ?>; include($data);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 28. Stream ●PHP のストリーム ● ファイルの入出力のように様々なプロトコルを透過 的に扱う仕組み ● fopen(http://example.com/foo/bar); ● fopen(file://foo/bar.txt);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 29. Stream ●PHP のストリーム ● ftp:// ● php:// ● zlib:// ● data:// ● ssh2:// ● php://memory@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  • 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. 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. Stream ●PHP のストリームに必須なメソッド ● url_stat() ● stream_stat() ● stream_open() 変数の読込み ● stream_read()  読込んだ変数を返す ● stream_tell()   読込んだポジション ● stream_eof()   読込み終了判定@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper