Más contenido relacionado
La actualidad más candente (20)
Similar a SPL fukuokaphp_1 (20)
SPL fukuokaphp_1
- 3. 1. SPL とは
2. Autoload
3. Iterator
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 5. SPL とは?
Standard PHP Library
クラス、インターフェース、例外、関数
PHP5.0 から導入された
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 6. SPL とは?
使わなくても良い
使えば便利というだけ
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 7. SPL とは?
Autoload
Iterator
配列処理
ファイル操作
例外
スタック、キュー
Observer
http://jp.php.net/manual/ja/book.spl.php
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 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
- 13. マジックメソッド __autoload
require './lib/Foo.php';
require './lib/Bar.php';
new Foo();
new Bar();
OK
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 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. SPL autoloader
__autoload()
グローバル関数
処理は1つのみに限定
spl_autoload_register()
コールバックを登録
複数コールバックの登録が可能
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 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
- 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
- 23. Iterator
DirectoryRecursiveIterator
RecursiveIteratorIterator
ディレクトリを
再帰的に探索しながら
特定ファイル名に絞込み
RegexIterator
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 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
- 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. 階層構造ディレクトリからファイル一覧表示
さらに php ファイルのみに絞る
RecursiveXXXIterator に対して
RegexIterator をかぶせて正規表現で絞る
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 28. イテレーション中に HtmlEscape
Class HtmlEscRII extends
RecursiveIteratorIterator {
public function current() {
return htmlspecialchars(
parent::current(),
ENT_QUOTES,
'UTF-8'
);
}
}
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper
- 32. PHP 祭り 2012
福岡
@phpmatsuri
@cakephper / @ichikaway http://d.hatena.ne.jp/cakephper