エリア
導入
ファイルエリアは、ファイルシステムの動作に影響を与えたい時に使います。大元のところで制限設定を行うことで、 当該ファイル・ディレクトリがアクセス許可されていないのではないか? と思い悩むことなく、 その制限範囲内で柔軟にファイルシステムを利用出来る境界線を策定することが出来るのです。
設定
初期設定では、ファイルエリアは全ディレクトリに対して無制限にアクセス出来るようになっています。 2 種類のエリア設定方法があります。まず手近なものとしては、 File::forge() メソッドに配列を渡す方法があります。
$config = array(
'basedir' => DOCROOT.'uploads',
'use_locks' => true,
);
$area = \File::forge($config);
より集中的に設定したいなら、File 設定ファイルによって 1つのエリア (あるいは複数のエリア) を設定します。 設定する時は、まず core/config/file.phpをapp/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');
利用法
ファイルクラスのエリアを使うには 2 つの方法があります。
1 つ目はスタティックなコンテキストの中でエリアを使い、
呼び出している関数に File_Area インスタンスあるいは識別子を与えることです。
// あるディレクトリの中身を読み込む
try
{
$dir = File::read_dir('somedir', 0, null, 'my_area');
}
catch(\FileAccessException $e)
{
// 失敗したときの処理
}
2 つ目の方法としては、エリアから直接に関数を呼び出すことです。
// エリアを取得する
$area = File::instance('my_area');
try
{
$dir = $area->read_dir('somedir', 0, null);
}
catch(\FileAccessException $e)
{
// 失敗したときの処理
}