Finder クラス
Finder クラスは検索対象パスから指定されたファイルを検索し、同じようにファイルを読み込むことができます。
検索順
finder はローカルのファイルに対して次の検索ロジックを用います。
- もし、一時的なパス (フラッシュパス) が定義されていれば、それらは定義の順で一番最初に検索されます
- 現在のリクエストコンテキストがモジュールならば、モジュールが次に検索されます
- さらにリクエストパスが定義されていれば、それらは定義の順で次の順番となります
- 次に、APPPATH が検索されます
- 全ての読み込まれたパッケージが検索されます
- そして最後に、COREPATH が検索されます
app/config.php の中で 'caching' を有効にし、かつ有効なキャッシュパスを定義している場合、finder は見つけたファイルを全てキャッシュします、
したがって次回ファイルを探す時にディスクをクロールする必要はありません。
設定ファイル中でキャッシュの有効期限を指定することもできます。
forge($paths = array())
forge メソッドは新しい finder オブジェクトを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$paths |
array()
|
初期設定する検索対象パスを配列で指定します。 |
|
返り値 |
Finder オブジェクト |
例 |
$array = array(APPPATH, COREPATH);
$finder = Finder::forge($array));
|
instance()
instance メソッドは Finder の singleton オブジェクトを返します。
このインスタンスはファイルを検索するために FuelPHP のコアクラスによって使用されます。
最初に呼び出されたときは APPPATH
と COREPATH
を標準の検索対象パスとします。
静的 |
はい |
パラメータ |
なし
|
返り値 |
Finder オブジェクト |
例 |
$finder = Finder::instance();
|
search($dir, $file, $ext = '.php', $multiple = false, $cache = true)
search メソッドは標準の finder インスタンス上の locate()
の静的な別名です。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$dir |
string |
相対的な検索したいディレクトリ名。全ての検索対象パスにこのディレクトリを追加してファイルを検索します。 |
$file |
string |
検索したいファイルの拡張子を除いたファイル名。 |
$ext |
'.php'
|
検索したいファイルの拡張子。必ず先頭にドットを含むようにしてください。 |
$multiple |
false
|
false を指定すると、最初のファイルが見つかった時点でストップします。true を指定すると全ての検索対象パスを検索して見つかった結果を配列で返します。 |
$cache |
true
|
true を指定すると、後々の不要なディスクアクセスを防ぐために検索結果をキャッシュします。 |
|
返り値 |
見つかったファイルの完全な絶対パスか、見つからなかったときは false を返します。
$multiple が true だったときは見つかったファイルの完全な絶対パスを配列で返します。見つからなかったときは空の配列を返します。 |
例 |
// APPPATH/views/welcome/index.php を返します
$viewfile = Finder::search('views', 'welcome/index');
|
add_path($paths, $pos = null)
add_path メソッドは Finder インスタンスに検索対象パスを追加します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$paths |
mixed |
Finder インスタンスに追加する検索パス。配列で指定することもできます。 |
$pos |
null
|
追加するパスのリスト中の位置を指定します。
指定できる値:
null リストの最後に追加されます。
-1 リストの先頭に追加されます。
index 指定された位置の後ろに追加されます。
|
|
返り値 |
変更された Finder オブジェクト |
例外 |
OutOfBoundsException: 指定された index の値がリストのサイズにおさまっていないとき |
例 |
// 'mypackage' を検索パスの先頭に追加します。
Finder::instance()->add_path(PKGPATH.'mypackage', -1);
|
remove_path($path)
remove_path メソッドは Finder インスタンスの検索パスリストから特定のパスを除外します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
string |
削除したい検索パス |
|
返り値 |
変更された Finder オブジェクト |
例 |
// 'mypackage' を検索パスのリストから除外します。
Finder::instance()->remove_path(PKGPATH.'mypackage');
|
paths()
paths メソッドは現在の検索パスリストを返します。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
検索パスのリストを配列で返します |
例 |
// 標準で指定されている検索パスのリストを取得する
$paths = Finder::instance()->paths();
print_r($paths);
|
list_files($directory = null, $filter = '*.php')
list_files メソッドは検索パスから指定されたディレクトリの中にあるファイル全てのリストを取得します
(例えばカスケードされたファイルシステムとか) 。
これは全ての設定ファイルを検索パスの中から探したい時とかに使えます。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$directory |
null
|
相対的な検索したいディレクトリ名。全ての検索対象パスにこのディレクトリを追加してファイルを検索します。 |
$filter |
'*.php'
|
探したいファイルの種類 |
|
返り値 |
見つかったファイルの完全な絶対パスを配列で返します。 |
例 |
// 全てのデータベース設定ファイルを探す
$dbcfg = Finder::instance()->list_files('config', 'db.php');
|
このメソッドは現在のコンテキストを認識しています。だから、呼び出されたアクティブなモジュールコントローラが HMVC 構造のときにも
モジュールのパスを動的に検索パスに追加します。
locate($dir, $file, $ext = '.php', $multiple = false, $cache = true)
locate メソッドは検索パスからファイルを検索します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$dir |
string |
相対的な検索したいディレクトリ名。全ての検索対象パスにこのディレクトリを追加してファイルを検索します。 |
$file |
string |
検索したいファイルの拡張子を除いたファイル名。 |
$ext |
'.php'
|
検索したいファイルの拡張子。必ず先頭にドットを含むようにしてください。 |
$multiple |
false
|
false を指定すると、最初のファイルが見つかった時点でストップします。true を指定すると全ての検索対象パスを検索して見つかった結果を配列で返します。 |
$cache |
true
|
true を指定すると、後々の不要なディスクアクセスを防ぐために検索結果をキャッシュします。 |
|
返り値 |
見つかったファイルの完全な絶対パスか、見つからなかったときは false を返します。
$multiple が true だったときは見つかったファイルの完全な絶対パスを配列で返します。見つからなかったときは空の配列を返します。 |
例 |
// APPPATH/views/welcome/index.php を返します
$viewfile = Finder::instance()->locate('views', 'welcome/index');
|