Il componente Filesystem

Il componente Filesystem fornisce utilità di base per il filesystem.

Nuovo nella versione 2.1: Il componente Filesystem è nuovo in Symfony 2.1. In precedenza, la classe Filesystem si trovava nel componente HttpKernel.

Installazione

Si può installare il componente in due modi:

Utilizzo

La classe Symfony\Component\Filesystem\Filesystem è l’unico punto finale per le operazioni su filesystem:

use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOException;

$fs = new Filesystem();

try {
    $fs->mkdir('/tmp/random/dir/' . mt_rand());
} catch (IOException $e) {
    echo "Errore durante la creazione della cartella";
}

Nuovo nella versione 2.4: IOExceptionInterface e il suo metodo getPath sono nuovi in Symfony 2.4. Prima della 2.4, occorreva catturare la classe IOException.

Nota

I metodi mkdir(), exists(), touch(), remove(), chmod(), chown() e chgrp() possono ricevere una stringa, un array o un oggetto che implementi Traversable come parametro.

Mkdir

mkdir() crea una cartella. Su filesystem di tipo posix, le cartelle sono create in modalità predefinita 0777. Si può usare il secondo parametro per impostare la modalità:

$fs->mkdir('/tmp/photos', 0700);

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Exists

exists() verifica la presenza di tutti i file o cartelle e restituisce false se un file manca:

// questa cartella esiste, restituisce true
$fs->exists('/tmp/photos');

// rabbit.jpg esiste, bottle.png non esiste, restituisce false
$fs->exists(array('rabbit.jpg', 'bottle.png'));

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Copy

copy() copia file. Se la destinazione esiste già, file file è copiato solo se la data di modifica del sorgente è precedente a quella della destinazione. Questo comportamento è modificabile tramite un terzo parametro booleano:

// funziona solo se image-ICC è stato modificato dopo image.jpg
$fs->copy('image-ICC.jpg', 'image.jpg');

// image.jpg sarà sovrascritto
$fs->copy('image-ICC.jpg', 'image.jpg', true);

Touch

touch() imposta l’ora di accesso e modifica di un file. Per impostazione predefinita, usa l’ora attuale. Si può impostare un’ora diversa con il secondo parametro. Il terzo parametro è l’ora di accesso:

// imposta l'ora di accesso al timestamp attuale
$fs->touch('file.txt');
// imposta l'ora di modifica a 10 secondi nel futuro
$fs->touch('file.txt', time() + 10);
// imposta l'ora di accessoa 10 secondi nel passato
$fs->touch('file.txt', time(), time() - 10);

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Chown

chown() è usato per cambiare il proprietario di un file. Il terzo parametro è un booleano per un’opzione ricorsiva:

// imposta il proprietario del video lolcat a www-data
$fs->chown('lolcat.mp4', 'www-data');
// cambia il proprietario della cartella video ricorsivamente
$fs->chown('/video', 'www-data', true);

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Chgrp

chgrp() è usato per cambiare il gruppo di un file. Il terzo parametro è un booleano per un’opzione ricorsiva:

// imposta il gruppo del video lolcat a nginx
$fs->chgrp('lolcat.mp4', 'nginx');
// cambia il gruppo della cartella video ricorsivamente
$fs->chgrp('/video', 'nginx', true);

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Chmod

chmod() è usato per modificare la modalità di un file. Il terzo parametro è un’opzione ricorsiva booleana:

// imposta la modalità di video.ogg a 0600
$fs->chmod('video.ogg', 0600);
// imposta ricorsivamente la modalità della cartella src
$fs->chmod('src', 0700, true);

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Remove

remove() rimuove file, collegamenti simbolici, cartelle:

$fs->remove(array('symlink', '/path/to/directory', 'activity.log'));

Nota

Si può passare un array o un oggetto Traversable come primo parametro.

Rename

rename() rinomina file e cartelle:

// rinomina un file
$fs->rename('/tmp/processed_video.ogg', '/path/to/store/video_647.ogg');
// rinomina una cartella
$fs->rename('/tmp/files', '/path/to/store/files');

makePathRelative

makePathRelative() restituisce il percorso relativo di una cartella, data un’altra:

// restituisce '../'
$fs->makePathRelative(
    '/var/lib/symfony/src/Symfony/',
    '/var/lib/symfony/src/Symfony/Component'
);
// restituisce 'videos'
$fs->makePathRelative('/tmp/videos', '/tmp')

mirror

mirror() esegute il mirror di una cartella:

$fs->mirror('/percorso/della/sorgente', '/percorso/della/destinazione');

isAbsolutePath

isAbsolutePath() restiuisce true se il percorso dato è assoluto, false altrimenti:

// restituisce true
$fs->isAbsolutePath('/tmp');
// restituisce true
$fs->isAbsolutePath('c:\\Windows');
// restituisce false
$fs->isAbsolutePath('tmp');
// restituisce false
$fs->isAbsolutePath('../dir');

dumpFile

Nuovo nella versione 2.3: dumpFile è nuovo in Symfony 2.3

dumpFile() consente di esportare contenuti in un file. Lo fa in maniera atomica: scrive prima un file temporaneo e quindi lo sposta nella nuova posizione, in cui viene finalizzato. Questo vuol dire che l’utente vedrà sempre o il vecchio file completo o il nuovo file completo (ma mai un file parziale):

$fs->dumpFile('file.txt', 'Ciao mondo');

Il file file.txt ora contiene Ciao mondo.

Si può passare come terzo parametro una modalità di file.

Gestione degli errori

Quando si verifica un problema, viene sollevata un’eccezione che implementa Symfony\Component\Filesystem\Exception\ExceptionInterface o Symfony\Component\Filesystem\Exception\IOExceptionInterface.

Nota

Viene sollevata una Symfony\Component\Filesystem\Exception\IOException se la creazione della cartella fallisce.

Tabella dei contenuti

Argomento precedente

Filesystem

Argomento successivo

LockHandler

Questa pagina