進階用法

简介

除了基本的 File 类別的靜態用法,也有較为複雜的選項可用。 首先是區域,基本上它是不能在外部动作的基础路徑, 并有一些配置選項。當在區域使用 File 类別的方法, 它們将回傳包裝目录&档案的物件。

區域

简介

档案區域被用來影響档案系统行为。透過設定基础限制, 你可以設定允許在这些限制內靈活運用的界限, 而不須擔心档案及目录的未認證的存取。

配置

預設情況下,档案區域穿過所有目录無限制存取。有兩種方式來設定这些配置值。 最快的方式是傳遞一个陣列進入 File::forge() 方法。

$config = array(
	'basedir'		=> DOCROOT.'uploads',
	'use_locks'		=> true,
);

$area = \File::forge($config);

一个更集中的方式是透過在你的 File 配置档案中定義一个(或更多)區域。要做到这一點, 複製 core/config/file.phpapp/config/file.php(或建立新的) 并且在 'areas' 陣列中定義你的區域。现在你可以透過提供識別符字串到 File::forge() 方法來取得區域。

// 在 app/config/file.php 裡面
'areas' => array(
	'my_area' => array(
		'basedir'		=> DOCROOT.'uploads',
		'use_locks'		=> true,
	),
),

// 现在取得區域

$area = \File::instance('my_area');
					

用法

有兩種方式在 File 类別中使用區域。
首先是在一个靜態情境下,提供一个 File_Area 實例或識別符到你正在呼叫的函式。

// 讀取目录的內容
try
{
	$dir = File::read_dir('somedir', 0, null, 'my_area');
}
catch(\FileAccessException $e)
{
	// 操作失敗
}

第二是直接從區域本身呼叫函式。

// 取得區域
$area = File::instance('my_area');

try
{
	$dir = $area->read_dir('somedir', 0, null);
}
catch(\FileAccessException $e)
{
	// 操作失敗
}