目录
当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Finder - 类別

优质
小牛编辑
120浏览
2023-12-01

Finder 类别能透过搜寻路径寻找所给的档案,以及载入所给的档案。

搜寻顺序

Finder 使用下列搜寻逻辑来定位档案:

  • 如果有定义任何快闪路径,这些会依定义顺序先被搜寻
  • 如果目前请求情境是模组,该模组将接着被搜寻
  • 如果有定义任何请求路径,这些会依定义顺序接着搜寻
  • 接着,搜寻 APPPATH
  • 所有载入的套件会被搜寻
  • 以及最后,COREPATH 会被搜寻

如果你在你的 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($dir, $file, $ext = '.php', $multiple = false, $cache = true)

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');