Come usare il componente del filesystem Symfony

In questo articolo, esploreremo il componente Symfony Filesystem, che fornisce metodi utili per interagire con un file system. Dopo l'installazione e la configurazione, creeremo alcuni esempi reali di come utilizzarlo.

Il componente del filesystem Symfony

Più spesso, dovrai interagire con un file system se hai a che fare con applicazioni PHP. Nella maggior parte dei casi, si finisce per utilizzare le funzioni PHP di base o si crea la propria classe wrapper personalizzata per ottenere la funzionalità desiderata. In ogni caso, è difficile da mantenere per un periodo di tempo più lungo. Quindi quello di cui hai bisogno è una libreria che sia ben gestita e facile da usare. È qui che entra in gioco il componente Symfony Filesystem.

Il componente Symfony Filesystem fornisce utili metodi di wrapper che rendono l'interazione con il file system un gioco da ragazzi e un'esperienza divertente. Diamo un'occhiata veloce a cosa è capace di:

  • creare una directory
  • creando un file
  • modifica del contenuto del file
  • cambiando il proprietario e il gruppo di un file o directory
  • creando un link simbolico
  • copiare un file o una directory
  • rimuovendo un file o una directory
  • e altro ancora

In questo articolo, ti mostrerò come liberare la potenza del componente Symfony Filesystem. Come al solito, inizieremo con le istruzioni di installazione e configurazione, quindi implementeremo alcuni esempi reali per dimostrare i concetti chiave.

Installazione e configurazione

In questa sezione, installeremo il componente Symfony Filesystem. Suppongo che tu abbia già installato Composer nel tuo sistema poiché avremo bisogno di installare il componente Fileystem disponibile su Packagist.

Quindi vai avanti e installa il componente Filesystem usando il seguente comando.

$ compositore richiede symfony / filesystem

Questo dovrebbe aver creato un composer.json file, che dovrebbe assomigliare a questo:

"require": "symfony / filesystem": "^ 4.1"

Quindi questa è la parte di installazione, ma come si dovrebbe utilizzarla? In realtà, è solo questione di includere il autoload.php file creato da Composer nella tua applicazione, come mostrato nello snippet seguente.

Un esempio del mondo reale

In questa sezione creeremo un esempio che dimostra come utilizzare il componente Filesystem nelle applicazioni per eseguire varie operazioni sul filesystem.

Per cominciare, andiamo avanti e creare il index.php file con il seguente contenuto.

Qui, abbiamo inizializzato il filesystem oggetto a $ fsObject e ha salvato la directory corrente in $ current_dir_path. Nelle prossime sezioni, useremo $ fsObject per eseguire diverse operazioni.

Crea una nuova directory

Per prima cosa creeremo una nuova directory.

// crea una nuova directory prova $ new_dir_path = $ current_dir_path. "/ Foo"; if (! $ fsObject-> esiste ($ new_dir_path)) $ old = umask (0); $ fsObject-> mkdir ($ new_dir_path, 0775); $ fsObject-> chown ($ new_dir_path, "www-data"); $ fsObject-> chgrp ($ new_dir_path, "www-data"); umask ($ vecchio);  catch (eccezione IOExceptionInterface $) echo "Errore nella creazione della directory in". $ Eccezione-> getPath (); 

Qui, abbiamo usato il esiste metodo per verificare se il foo la directory esiste già prima di crearla.

Successivamente, abbiamo usato il mkdir metodo per creare il foo directory con il 0775 permessi, il che significa che sono leggibili ed eseguibili da tutti, ma solo scrivibili dal proprietario del file e dal loro gruppo. (Questa è la notazione ottale per i permessi del filesystem - per saperne di più, controlla questa ripartizione della notazione ottale.) Inoltre, abbiamo usato il chown e chgrp metodi per cambiare il proprietario e il gruppo di foo elenco.

Crea un nuovo file e aggiungi contenuti

In questa sezione, creeremo un nuovo file e aggiungeremo i contenuti a quel file.

// crea un nuovo file e aggiungi contenuti prova $ new_file_path = $ current_dir_path. "/Foo/bar.txt"; if (! $ fsObject-> exists ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Aggiunta di contenuto fittizio al file bar.txt. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Questo dovrebbe essere aggiunto alla fine del file. \ n");  catch (eccezione IOExceptionInterface $) echo "Errore durante la creazione del file in". $ Eccezione-> getPath (); 

Qui, abbiamo usato il toccare metodo per creare un nuovo file e quindi utilizzato chmod per impostare le sue autorizzazioni a 0777-globalmente leggibile, scrivibile ed eseguibile.

Una volta creato il file, puoi usare il File spazzatura metodo per aggiungere contenuti in quel file. D'altra parte, se si desidera aggiungere contenuti al file già esistente, è possibile utilizzare il appendToFile metodo, come mostrato nell'esempio precedente.

Copia una directory

Finora, abbiamo creato il foo directory e il bar.txt file usando il $ fsObject oggetto. In questa sezione vedremo come copiare una directory insieme ai contenuti.

// copia una directory prova $ src_dir_path = $ current_dir_path. "/ Foo"; $ dest_dir_path = $ current_dir_path. "/ Foo_copy"; if (! $ fsObject-> esiste ($ dest_dir_path)) $ fsObject-> mirror ($ src_dir_path, $ dest_dir_path);  catch (eccezione IOExceptionInterface $) echo "Errore nella copia della directory in". $ Eccezione-> getPath (); 

Come puoi vedere, per prima cosa abbiamo creato i nomi dei percorsi con concatenazione di stringhe. Quindi, una volta assicurati che la directory non esistesse già usando il esiste metodo, abbiamo usato il specchio metodo per copiare il foo directory nel foo_copy elenco.

Rimuovere una directory

Infine, vediamo come rimuovere una directory.

// rimuove una directory prova $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ FsObject-> rimuovere ($ arr_dirs);  catch (eccezione IOExceptionInterface $) echo "Errore durante l'eliminazione della directory in". $ Eccezione-> getPath (); 

Di nuovo, è abbastanza semplice: per cancellare una directory, basta usare il rimuovere metodo.

È possibile trovare il codice completo per index.php nel nostro repository GitHub.

Conclusione

Questa è una breve introduzione al componente Symfony Filesystem. Il componente Symfony Filesystem fornisce metodi che rendono l'interazione con un file system un gioco da ragazzi. Abbiamo esaminato come installare il componente e abbiamo creato una manciata di esempi per dimostrare vari aspetti del componente.

Spero che questo articolo ti sia piaciuto e sentiti libero di pubblicare i tuoi pensieri utilizzando il feed di seguito!