File System Extensions (php.net manual)
§ 1. Directories (php.net manual)
Le funzioni appartenenti a questo gruppo hanno a che fare con gli oggetti della classe Directory. Gli oggetti della classe Directory sono istanziati per mezzo della funzione dir() ed hanno le seguenti proprietà e metodi:
- Properties
- public string $path - la directory aperta;
- public resource $handle - la risorsa che può essere usata con altre funzioni quali readdir(), rewinddir(), e closedir();
- Methods
- public void close([resource $dir_handle])
- public string read([resource $dir_handle])
- public void rewind([resource $dir_handle])
Nel seguito proverò ad utilizzare tutti questi membri
§ 2. Funzioni
Le funzioni che hanno a che fare con le directories sono le seguenti:
- chdir - cambia la directory corrente;
- chroot - cambia la root directory;
- closedir - chiude il directory handle;
- dir - restituisce un istanza di Directory;
- getcwd - ottiene la directory corrente;
- opendir - apre la directory indicata nel directory handle;
- readdir - legge le entries della directory indicata nel directory handle;
- rewinddir - riavvolge la directory indicata nel directory handle;
- scandir - elenca i file e le directories all'interno di uno specifico path;
- is_dir - dice se un filename è una directory;
Nel seguito proverò tutte queste funzioni
§ 2.1 chdir
change directory
bool chdir(string $directory)
- Con echo getcwd(); visualizzo la directory corrente;
- con chdir(".."); risalgo di una posizione nell'albero delle directory
- con echo getcwd( ) visualizzo la nuova directory corrente;
- con chd("./TestPages" ) mi riposiziono sulla directory corrente precedente;
- con echo getcwd( ) verifico di aver ripristinato la situazione iniziale;
cambio directory riuscito
/var/www/virtual/clamin.it/htdocs
ripristinata la situazione iniziale
/var/www/virtual/clamin.it/htdocs/TestPages
§ 2.2 chroot
change root directory
bool chroot(string $directory)
Questa funzione non è implementata sulle piattaforma Windows
§ 2.3 closedir
Chiude uno specifico directory handler
void closedir([resource $dir_handle])
§ 2.4 dir
Crea una istanza della classe Directory
Directory dir(string $directory [, resource $context]
Non ho la più pallida idea di cosa sia l'oggetto resource, ma dal momento che è un parametro opzionale, per il momento, sorvolo.
Provo ad esplorare tutte le proprietà pubbliche e i metodi di una istanza di Directory
- con $dir=dir(getcwd()) istanzio un oggetto della classe Directory;
- con echo $dir->path visualizzo il contenuto della proprietà path;
- con var_dump($dir->handle) visualizzo il contenuto della proprietà handle;
- con echo $dir->read() verifico cosa restituisce il metodo read;
- con echo $dir->read() verifico cosa restituisce il metodo read chiamato una seconda volta;
- con $dir->rewind() riposizione il puntatore usato da read sulla prima entry della directory;
- con $dir->close() chiudo il directory handler;
resource(3) of type (stream)
.
..
Ora ho capito che il metodo read() restituisce la prima entry della Directory e posiziona un puntatore sul successivo elemento. Quando non ci sono più elementi da leggere restituisce false.
A questo punto provo a fare un loop di questo tipo:
while(($entry=$dir->read()!== false){echo $entry."
";}
..
testHistoryBack.html
MyClass1.php
test_04.html
provaDateAndTime.txt
test_03.css
showLoadedExtensions.php
registraUtente.php
testmail.php
D&D07.html
esempi.css
test_07.html
php_FileHandling.php
php_MySQL_DeleteData.php
php_MySQL_SelectData.php
test_02.html
php_ProgFormRegPopup.php
test_01.html
js_02.js
php_Sessions2.php
formOrdinePizza.php
php_01.css
test_02.css
utentiRegistrati.php
forms.css
DragAndDrop01.html
css03.css
php_Functions.php
php_MySQLDatabase.php
new.html
test_01.css
Step_01_02.html
dialog.html
js_03.js
FileAPI_00.js
js_04.css
provaAuthorStyleSheet.html
Mobile_01.html
test_13.html
favicon.ico
test_09.html
HTML5_FILE_API.js
js_05.js
php_DateAndTime.js
php_MySQL_CreateDB.php
FileAPI_DandD.js
PhotosStream.css
php_DateAndTime.html
canvas.css
es01.php
welcome.txt
js_06.html
cancellaTabellaVisitatoriRegistrati.php
popup01.html
testHistory.html
PhotosGalleria.html
test.js
new1.html
ChiSonoTmp.css
js_06.js
D&D03.html
target.html
php_MySQL_LimitData.php
js_10.js
Mobile_03.html
EsempioDoc.html
formReg.php
js_09.js
DragAndDrop2.css
test_06.css
php_ProgFormReg.php
js_07.html
Modello_01_02.html
moduli.css
php_IncludeAndRequire.php
php_ClassesAndObjects.php
ChiSono.css
js_03.html
EsempiDiPosizionamentoFisso.html
js_01_new.css
DragAndDrop.html
Step_01_01.html
StudioHomePage_01.css
DragAndDrop2.html
php_PDO.php
php_Exception.php
js_DateAndTime.html
ClaMin.css
StrumentiSviluppoWeb.html
D&D01.js
provaUserAgentStyleSheet.html
test_08.html
galleriaDiFoto.html
js_04.js
js_05.html
D&D01.html
php_Directories.php
php_03.js
comune.css
php_Manual.js
formReg.js
FileAPI_DandD.css
js_03.css
index.html
D&D02.css
Drag.js
js_01.js
php_MySQL_InsertData.php
echoParametriPost.php
js_07.js
formReg.html
php_ErrorHandling.php
corniceFoto.css
FileAPI_01.html
test_10.html
test_12.html
jQuery
D&D06.css
popup01.css
creaTabellaVisitatoriRegistrati.php
php_03.php
ordinePizza.php
FileAPI.css
js_02.html
upload.php
FileAPI_00.html
php_FiltersAdvanced.php
css06.css
Modello_01_current.html
iframe01.html
css04.css
D&D02.html
formSelectQueries.js
select.html
test_03.html
css04.html
ape.gif
RebeccaMurpheyJSBasics.js
js_08.html
PhotosStream.html
php_ClassiEdInterfaccePredefinite.php
webdictionary.txt
formSelectQueries.html
css01.html
testfileSave.txt
php_MySQL_GetLastID.php
PhotosGalleria.css
test_input.php
php_01.php
test_04.css
datalist.html
StudioHomePage_01.html
php_MySQL_CreateTable.php
js_04.html
js_09.html
popup02.js
php_arrays.html
test_05.html
FileAPI_01.css
HTML5_FILE_API.html
test_06.html
D&D04.html
prova di stampa.pdf
php_Manual.php
provaArrays.php
Modello_01_04.html
css05.css
userContent.css
infoConnessione.php
DragAndDrop01.js
D&D01.css
mostraQuery.php
Modello_01_01.html
popup01.js
Modello_01_01.txt
D&D05.css
MyClass2.php
php_MySQL_Connect.php
php_MySQL_InsertMultiple.php
selectt.html
DragAndDrop.css
formOrdinePizza.html
test.css
DragAndDrop01.css
tabelle.css
Mobile_02.html
IntroHTML.html
js_10.html
php_02.css
js_02.css
D&D04.css
js_01.html
css02.css
D&D.css
D&D08.css
formUtenti.php
css07.html
php_Cookies.php
php_02.js
js_Functions.html
test_05.css
css02.html
test_11.html
Modello_01.html
echo_input.php
php_FileUpload.php
D&D07.css
php_02.php
css03.html
php_MySQL_UpdateData.php
js_08.js
testfile.txt
corniceFoto.html
EloquentJS.js
D&D08.html
css05.html
D&D06.html
js_01.css
css02.js
FileAPI_DandD.html
php_Sessions.php
EsempiDiPosizionamento.html
showPHPInfo.php
prova_DateAndTime.js
php_MySQL_Prepared.php
php_Filters.php
D&D03.css
Modello_01_03.html
mostraMenuQueryTestPages.php
echoParametriPost.txt
css06.html
D&D05.html
welcome.php
provaArrays.txt
php_ComeLeggereUnaDichiarazioneDiFunzione.php
FloatProperty.html
provaDateAndTime.php
Nota: L'ordine di restituzione delle directory del metodo read dipende dal sistema operativo.
§ 2.5 getcwd
get current work directory
string getcwd(void)
echo getcwd()."<br>";
§ 2.6 opendir
§ 2.7 readdir
§ 2.9 rewinddir
§ 2.10 scandir
Elenca i file e le directory in uno specificato path
array scandir (string $directory [, int $sorting_order=SCANDIR_SORT_ASCENDING[, resource $context]]])
Restituisce un array di file e directory dalla $directory
Al momento mi sembra la funzione più utile.
I possibili ordinamenti sono:
SCANDIR_SORT_DESCENDING:1
SCANDIR_SORT_NONE:2
Ecco un esempio d'uso della funzione scandir:
§ 2.11 is_dir
Dice se il filename è una directory
bool is_dir (string $filename)
Per provare questa funzione:
- con $dir=dir($dirname) istanzio un oggetto della classe contenente sia fileordinari che directory ;
- con while($filename=$dir->read()){if (is_dir($dirname.$file)){echo $filename}} elenco tutte le directory contenute in $dir;
- con $dir->rewind() riposizione il puntatore usato da read sulla prima entry della directory;
- con while($filename=$dir->read()){if (!is_dir($dirname.$file)){echo $filename}} elenco tutti i file ordinari contenuti in $dir;
Template
images
..
CorsoHTML
.
TestPages
CorsoJavaScript
classiPhp
ProPiz
photos
StorieNaturali
CorsoPHP
download
phpmyadmin
txt
files
Files contenuti in ../
nortonsw_751f84b0-daa9-0.html
index03.html
Ringraziamenti.html
esempi.css
index01.html
QuaSic_RC_NC_Download.html
QuaSic-Formazione-Download.html
Articoli.html
articoli.css
ModelliHomePage.html
stub.html
index.js
IndexNew.html
ChiSono.html
index.html
index04.html
RiferimentiDefinizioni.html
testList.html
sitemap.xml
QuaSic-Formazione.html
SviluppoSW.html
FotoDiPiante.html
StorieDiPiante.html
Miglioramento.html
efficienzaProduzione.html
gestioneReclami.html
index02.html
LinguaggiWebIndex.html
MetodiStrumenti.html
common.css
ClaMin.js
google56aa7042b916f2fa.html
esempi.html
FotoDiAnimali.html
index.css
IndexOld.html
nortonsw_d6f64050-c0c3-0.html
QuaSic-Rc-NC.html
Stessa funzione utilizzando scandir() al posto di $read->read():
- con $elenco=scandir($dirname);
- con foreach($elenco as $filename){if (is_dir($dirname.$file)){echo $filename}} elenco tutte le directory contenute in $dir;
- con foreach($elenco as $filename){if (!is_dir($dirname.$file)){echo $filename}} elenco tutti i file ordinari contenuti in $dir;
.
..
CorsoHTML
CorsoJavaScript
CorsoPHP
ProPiz
StorieNaturali
Template
TestPages
classiPhp
download
files
images
photos
phpmyadmin
txt
Files contenuti in ../
Articoli.html
ChiSono.html
ClaMin.js
FotoDiAnimali.html
FotoDiPiante.html
IndexNew.html
IndexOld.html
LinguaggiWebIndex.html
MetodiStrumenti.html
Miglioramento.html
ModelliHomePage.html
QuaSic-Formazione-Download.html
QuaSic-Formazione.html
QuaSic-Rc-NC.html
QuaSic_RC_NC_Download.html
RiferimentiDefinizioni.html
Ringraziamenti.html
StorieDiPiante.html
SviluppoSW.html
articoli.css
common.css
efficienzaProduzione.html
esempi.css
esempi.html
gestioneReclami.html
google56aa7042b916f2fa.html
index.css
index.html
index.js
index01.html
index02.html
index03.html
index04.html
nortonsw_751f84b0-daa9-0.html
nortonsw_d6f64050-c0c3-0.html
sitemap.xml
stub.html
testList.html