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

File 处理程序 - 类別

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

简介

Fuel 能让你包装目录和档案在物件中。透过这样做, 它能让你在一个 OO 基础上存取及修改档案系统项目(档案及目录)。

接收自 File 类别(或档案区域)的物件是档案处理程序。Fuel 有两个核心档案处理程序:档案处理程序 以及 目录处理程序。 就像你所期望的,这些类别处理档案和目录。

主题

用法

每个辅助类别带有一组方法, 能让你对包装在档案或目录中的物件执行操作。这里是一些使用 File::get 的範例:

 // 首先我们会取得一个档案
$file = \File::get(DOCROOT.'/here_is_my/textfile.txt');

现在我们已经取得档案处理程序,我们可以使用它的方法来完成某事。

// 让我们重新命名它。
$file->rename('new_name');

// 取得档案的内容
$content = $file->read();

// 并且改回原来的名称
$file->rename('textfile');

正如你可以在上面的例子看到,重新命名文件时,你不需要重新取回该处理程序。 你可以一遍又遍地重複使用相同物件,直到你删除该档案或清除该变数。

档案处理程序

档案处理程序处理与档案的基础互动。每个範例都假设 $handler 变数是取回的处理程序。想知道如何取得处理程序? 请看用法段落

forge($path, $config = array(), $area = null, $content = array())

forge 方法回传一个新的 File_Handler_File 物件。

静态
参数
参数预设描述
$path必要指向档案的路径
$configarray()选择性的配置阵列
$areanullFile_Area 实例
$content阵列忽略
回传回传一个新的 File_Handler_File 物件。
範例
$handler = File_Handler_File::forge('path/to/file.txt', $config_array, $my_file_area);

read($as_string = false)

read 方法是 File::read 的捷径。

静态
参数
参数预设描述
$as_stringfalse设为 true 以使用 file_get_contents() 而不是 readfile()
回传回传 IO 或字串(档案内容)
範例
$file_content = $handler->read(true);

rename($new_name, $new_extension = false)

rename 方法是 File::rename 的捷径。

静态
参数
参数预设描述
$new_name必要新档案名称
$new_extensionfalse新副档名
回传布林,来自 rename() 的结果
範例
$handler->rename('new_name');

move($new_path)

move 方法是 File::move 的捷径。

静态
参数
参数预设描述
$new_path必要指向新目录的路径,必须是有效的
回传布林,来自 rename() 的结果
範例
$handler->move(DOCROOT.'/new/parent/directory/');

copy($new_path)

copy 方法是 File::copy 的捷径。

静态
参数
参数预设描述
$new_path必要指向要複製目录到的路径,必须是有效的
回传布林,来自 copy() 的结果
範例
$handler->copy(DOCROOT.'/directory/');

update($new_content)

update 方法是 File::update 的捷径。

静态
参数
参数预设描述
$new_content必要新的档案内容
回传true 在成功时
範例
$handler->update('the new content');

delete()

delete 方法是 File::delete 的捷径。

静态
回传布林,来自 unlink() 的结果
範例
$handler->delete();

get_url()

get_url 方法是 File::get_url 的捷径。

静态
回传公开 URL
範例
$url = $handler->get_url();

get_permissions()

get_permissions 方法是 File::get_permissions 的捷径。

静态
回传八进位制的档案权限
範例
$permissions = $handler->get_permissions();

get_time($type = 'modified')

get_time 方法是 File::get_time 的捷径。

静态
参数
参数预设描述
$type'modified'需要被回传的时间。只能是 createdmodified
回传档案的建立或修改时间戳记
範例
$created_at = $handler->get_time('created');

$modified_at = $handler->get_time('modified');
// 或简写
$modified_at = $handler->get_time();

get_size()

get_size 方法是 File::get_size 的捷径。

静态
回传档案大小(位元组)
範例
$file_size = $handler->get_size();

get_path()

get_path 方法回传档案路径。

静态
回传档案路径
範例
$file_path = $handler->get_path();
						// 回传 "/path/to/file.txt"

目录处理程序

目录处理程序处理与目录的基础互动。每个範例都假设 $handler 变数是取回的处理程序。想知道如何取得处理程序? 请看用法段落

forge($path, $config = array(), $area = null, $content = array())

forge 方法回传一个新的 File_Handler_Directory 物件。

静态
参数
参数预设描述
$path必要指向目录的路径
$configarray()选择性的配置阵列
$areanullFile_Area 实例
$content阵列目录的内容
回传回传一个新的 File_Handler_File 物件。
範例
$handler = File_Handler_Directory::forge('path/to/dir');

read($depth = 0, $filters = null)

read 方法是 File::read_dir 的捷径。

静态
参数
参数预设描述
$depth0要递迴目录的深度,1 是只有目前,而 0 或更小是无限
$filtersnull局部正规表达式的阵列,或预设的非阵列
回传回传目录内容在一个阵列中
範例
$cir_contents = $handler->read();

rename($new_name)

rename 方法是 File::rename_dir 的捷径。

静态
参数
参数预设描述
$new_name必要新目录名称
回传布林,来自 rename() 的结果
範例
$handler->rename('new_name');

move($new_path)

move 方法是 File::move 的捷径。

静态
参数
参数预设描述
$new_path必要指向新目录的路径,必须是有效的
回传布林,来自 rename() 的结果
範例
$handler->move(DOCROOT.'/new/parent/directory/');

copy($new_path)

copy 方法是 File::copy_dir 的捷径。

静态
参数
参数预设描述
$new_path必要指向要複製目录到的路径,必须是有效的
回传布林,来自 copy() 的结果
範例
$handler->copy(DOCROOT.'/directory/');

delete($recursive = true, $delete_top = true)

delete 方法是 File::delete_dir 的捷径。

静态
参数
参数预设描述
$recursivetrue是否也删除子目录内容
$delete_toptrue是否在为空时删除上层目录
回传true 在成功时
範例
$handler->delete();

get_permissions()

get_permissions 方法是 File::get_permissions 的捷径。

静态
回传八进位制的目录权限
範例
$permissions = $handler->get_permissions();

get_time($type = 'modified')

get_time 方法是 File::get_time 的捷径。

静态
参数
参数预设描述
$type'modified'需要被回传的时间。只能是 createdmodified
回传目录的建立或修改时间戳记
範例
$created_at = $handler->get_time('created');

$modified_at = $handler->get_time('modified');
// 或简写
$modified_at = $handler->get_time();

撰写处理程序

正如前面所提到,Fuel 带有两个预定义的处理程序。一个用于目录以及一个用于档案。 透过撰写你自己的处理程序,你可以改变行为并且藉由档案类型添加相应功能。 例如处理 csv 文件时,你可能希望在读取时自动解析他们, 或可以从一个图像档案取回图像。

如何撰写他们……

处理程序是扩充 File Handler 类别(\File_Handler_File)的类别。 这里是一个範例:

<?php

class File_Handler_XML extends \File_Handler_File
{

	/**
	 * Read 方法指定此处理程序会如何处理档案内容
	 */
	public function read()
	{
		return simplexml_load_file($this->path);
	}
}

/* End of file xml.php */

注意 $this->path。这将一直保持路径为目前档案,即使在移动或改名时。

添加他们……

File 处理程序可以透过在 file 配置中添加来指派。 透过添加它们到基础配置,所有来自特定副档名的档案将被所需的处理程序取回。 你也可以在一个区域基础上, 透过添加它们到你想使用的区域配置中来指派处理程序。

// 在 app/config/file.php

'base_config' => array(
	'file_handlers' => array(
		'csv' => 'File_Handler_Csv',
	),
),

'areas' => array(
	'my_area' => array(
		'file_handlers' => array(
'xml' => 'File_Handler_XML',
		),
	),
),