Finder 类別

Finder 类別能透過搜尋路徑尋找所給的档案,以及載入所給的档案。

搜尋順序

Finder 使用下列搜尋邏輯來定位档案:

如果你在你的 app/config.php 啟用 'caching',而且你已定義有效的快取路徑, Finder 会快取所有找到的档案,如此一來,下次尋找档案時就不必抓取硬碟。 你也可以在你的配置档案中指定快取生存時間。

forge($paths = array())

forge 回傳一个新的 Finder 物件。

靜態
參数
參数 預設 描述
$paths
array()
要給此 Finder 實例初始化的路徑陣列。
回傳 Finder 物件
範例
$array = array(APPPATH, COREPATH);
$finder = Finder::forge($array));

instance()

instance 方法回傳 Finder 物件的獨體。 这个實例也被 FuelPHP 核心类別用來尋找档案,并且在第一次呼叫時会初始化, 帶著 APPPATHCOREPATH 做为預設搜尋路徑。

靜態
參数
回傳 Finder 物件
範例
$finder = Finder::instance();

search 方法是在預設 Finder 實例上 locate() 的靜態別名。

靜態
參数
參数 預設 描述
$dir 字串 相對於要搜尋的目录。當试著要定位档案時,它被附加到所有定義的搜尋路徑。
$file 字串 要尋找档案的主档名。
$ext
'.php'
要尋找档案的副档名。这必須包含開頭的點。
$multiple
false
如果为 false,在第一个档案找到時停止搜尋。如果为 true,搜尋所有路徑,并回傳所有找到的档案做为一个陣列。
$cache
true
如果为 true,为隨後的請求快取結果,來避免不必要的硬碟存取。
混合 找到档案的完整路徑,或 false 如果沒找到档案。 在一个多重搜尋的情況下,一个找到路徑的陣列会被回傳,或當沒有档案被找到時是一个空陣列。
範例
// 将回傳 APPPATH/views/welcome/index.php
$viewfile = Finder::search('views', 'welcome/index');

add_path($paths, $pos = null)

add_path 方法添加一个新搜尋路徑到 Finder 實例,在所給的位置。

靜態
參数
參数 預設 描述
$paths 混合 要添加給 Finder 實例搜尋路徑的路徑或路徑陣列。
$pos
null
路徑應該被添加到列表的位置。 可能的選項有: null 以附加到列表結尾, -1 以附加在列表開頭,或 index 以在列表中所給索引之後插入該路徑。
回傳 用來鍊結的目前物件
拋出 OutOfBoundsException,當所給的索引位置超出範圍。
範例
// 確保 Finder 最先搜尋 'mypackage'
Finder::instance()->add_path(PKGPATH.'mypackage', -1);

remove_path($path)

remove_path 方法從 Finder 實例搜尋列表移除所給的路徑。

靜態
參数
參数 預設 描述
$path 字串 要移除的路徑。
回傳 用來鍊結的目前物件
範例
// 從搜尋路徑列表移除 '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 字串 相對於要搜尋的目录。當试著要定位档案時,它被附加到所有定義的搜尋路徑。
$file 字串 要尋找档案的主档名。
$ext
'.php'
要尋找档案的副档名。这必須包含開頭的點。
$multiple
false
如果为 false,在第一个档案找到時停止搜尋。如果为 true,搜尋所有路徑,并回傳所有找到的档案做为一个陣列。
$cache
true
如果为 true,为隨後的請求快取結果,來避免不必要的硬碟存取。
混合 找到档案的完整路徑,或 false 如果沒找到档案。 在一个多重搜尋的情況下,一个找到路徑的陣列会被回傳,或當沒有档案被找到時是一个空陣列。
範例
// 将回傳 APPPATH/views/welcome/index.php
$viewfile = Finder::instance()->locate('views', 'welcome/index');