Advanced usage

Introduction

Aside from the basic static usage of the File class there are also more complex options available. The first are areas which are basically basepaths it cannot act outside of and have some configuration options. And when using the File class's methods on an area they will return objects wrapping directories & files.

Areas

Introduction

File areas are used to influence file system behaviour. By setting basic restrictions you can set boundaries to allow a flexible use inside those limits without worrying about unauthorized access of files and directories.

Configuration

By default file areas have unlimited access through all directories. (The default area is defined as base_config in File config file.) There are two ways to set these configuration values. The quickest way is to pass an array intro the File::forge() method.

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

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

A more centralized way is by defining an area (or more) inside your File config file. To do so, copy core/config/file.php into app/config/file.php (or create a new one) and define your area inside the 'areas' array. Now you can get the area by supplying the string identifier to the File::forge() method.

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

// Now get the area

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

Usage

There are 2 ways to use areas in the File class.
The first is to use areas in a static context, supply a File_Area instance or identifier to the function you're calling.

// Read the contents of a directory
try
{
	$dir = File::read_dir('somedir', 0, null, 'my_area');
}
catch(\FileAccessException $e)
{
	// Operation failed
}

The second way is to call the functions directly from the area itself.

// Get the area
$area = File::instance('my_area');

try
{
	$dir = $area->read_dir('somedir', 0, null);
}
catch(\FileAccessException $e)
{
	// Operation failed
}