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.

SPL fukuokaphp_1

2,249 views

Published on

Standard PHP Libraryの説明。
主にAutoload, Iterator。

Published in: Technology
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yxufevpm } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yxufevpm } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yxufevpm } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yxufevpm } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yxufevpm } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yxufevpm } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

SPL fukuokaphp_1

  1. 1. SPL 2012/5/23FukuokaPHP #1
  2. 2. Yasushi Ichikawa@cakephper / @ichikawayhttp://d.hatena.ne.jp/cakephper
  3. 3. 1. SPL とは 2. Autoload 3. Iterator@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  4. 4. SPL とは
  5. 5. SPL とは? Standard PHP Library  クラス、インターフェース、例外、関数   PHP5.0 から導入された  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  6. 6. SPL とは? 使わなくても良い 使えば便利というだけ    @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  7. 7. SPL とは? Autoload Iterator 配列処理   ファイル操作 例外 スタック、キュー Observer   http://jp.php.net/manual/ja/book.spl.php@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  8. 8. Autoload
  9. 9. Autoload require/import 地獄に サヨナラだ   require_once(File); require_once(DB);   require_once(Session); require_once(Model); require_once(Helper); require_once(Form);@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  10. 10. Autoload クラス利用時に動的読込み ファイル名とクラス名を一致   させておくと良い  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  11. 11. マジックメソッド __autoload new Foo();   NG: Foo クラスが無い@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  12. 12. マジックメソッド __autoload require ./lib/Foo.php; new   Foo(); OK@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  13. 13. マジックメソッド __autoload require ./lib/Foo.php; require ./lib/Bar.php; new Foo();   new Bar(); OK@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  14. 14. マジックメソッド __autoload function __autoload($name){ require lib/. $name . .php; }   new Foo(); //$name に Foo new Bar(); //$name に Bar OK@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  15. 15. SPL autoloader __autoload() グローバル関数 処理は1つのみに限定 spl_autoload_register()    コールバックを登録   複数コールバックの登録が可能@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  16. 16. SPL autoloader // CakePHP 例 lib/Cake/bootstrap.php require CAKE . Core . DS .App.php;   spl_autoload_register(array(App, load));@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  17. 17. Iterator
  18. 18. Iterator 繰り返し処理 foreach   でまわせる  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  19. 19. Iterator クラス達 AppendIterator LimitIterator ArrayIterator MultipleIterator NoRewindIterator CachingIterator ParentIterator CallbackFilterIterator RecursiveArrayIterator DirectoryIterator RecursiveCachingIterator  FilesystemIterator EmptyIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator FilterIterator RecursiveFilterIterator GlobIterator RecursiveIteratorIterator InfiniteIterator RecursiveRegexIterator IteratorIterator RecursiveTreeIterator RegexIterator@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  20. 20. IteratorディレクトリクラスRecursiveDirectoryIterator   例  ・ディレクトリの中のディレクトリのファイルを取得@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  21. 21. Iterator 再帰クラス  RecursiveIteratorIterator 例 ・配列の中の配列まで処理  ・ディレクトリの中のディレクトリを処理@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  22. 22. Iterator 正規表現クラス  RegexIterator 例 ・イテレーション中に正規表現で処理  ・ディレクトリの .php ファイルのみを取得@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  23. 23. Iterator DirectoryRecursiveIterator RecursiveIteratorIterator ディレクトリを 再帰的に探索しながら   特定ファイル名に絞込み   RegexIterator@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  24. 24. 階層構造ディレクトリからファイル一覧表示 $Iterator = new RecursiveIteratorIterator(   new RecursiveDirectoryIterator($path) );   foreach ($Iterator as $file) { if ($file->isFile()) { echo $file->getPathname(). "n"; } }  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  25. 25. 階層構造ディレクトリからファイル一覧表示 RecursiveXXXXIterator のインスタンスを   RecursiveIteratorIterator に渡してまわす  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  26. 26. 階層構造ディレクトリからファイル一覧表示 さらに php ファイルのみに絞る $Iterator = new RecursiveIteratorIterator(   new RecursiveDirectoryIterator($path) ); $Iterator2 =  new RegexIterator( $Iterator, /^.+.(php)$/i ); foreach ($Iterator2 as $file) { if ($file->isFile()) {echo $file->getPathname(). "n";} }@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  27. 27. 階層構造ディレクトリからファイル一覧表示 さらに php ファイルのみに絞る   RecursiveXXXIterator に対して RegexIterator をかぶせて正規表現で絞る  @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  28. 28. イテレーション中に HtmlEscapeClass HtmlEscRII extends                          RecursiveIteratorIterator { public function current() { return htmlspecialchars(   parent::current(), ENT_QUOTES, UTF-8 ); }}@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper 
  29. 29. RecursiveIteratorIteratorRecursiveIteratorIterator のメソッド(一部)current() 現在の値を返すkey() 現在のキーを返す  beginIteration() イテレーション前に実行endIteration() イテレーション終了時に実行beginChildren() 子階層イテレーション時に実行endChildren() 子階層終了時に実行 @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  30. 30. RecursiveIteratorIterator多階層の配列から入れ子テーブル html 出力current() <tr><td> value </td></tr>  beginIteration() <table>endIteration() </table>beginChildren() <table>endChildren() </table> @cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  31. 31. RecursiveIteratorIterator多階層の配列から入れ子テーブル html 出力  https://gist.github.com/2768801@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  32. 32. PHP 祭り 2012 福岡 @phpmatsuri@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
  33. 33. THANK YOU

×