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
/home/clamin/public_html
ripristinata la situazione iniziale
/home/clamin/public_html/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."
";}
..
ChiSono.css
ChiSonoTmp.css
ClaMin.css
D&D.css
D&D01.css
D&D01.html
D&D01.js
D&D02.css
D&D02.html
D&D03.css
D&D03.html
D&D04.css
D&D04.html
D&D05.css
D&D05.html
D&D06.css
D&D06.html
D&D07.css
D&D07.html
D&D08.css
D&D08.html
Drag.js
DragAndDrop.css
DragAndDrop.html
DragAndDrop01.css
DragAndDrop01.html
DragAndDrop01.js
DragAndDrop2.css
DragAndDrop2.html
EloquentJS.js
EsempiDiPosizionamento.html
EsempiDiPosizionamentoFisso.html
EsempioDoc.html
FileAPI.css
FileAPI_00.html
FileAPI_00.js
FileAPI_01.css
FileAPI_01.html
FileAPI_DandD.css
FileAPI_DandD.html
FileAPI_DandD.js
FloatProperty.html
HTML5_FILE_API.html
HTML5_FILE_API.js
IntroHTML.html
Mobile_01.html
Mobile_02.html
Mobile_03.html
Modello_01.html
Modello_01_01.html
Modello_01_01.txt
Modello_01_02.html
Modello_01_03.html
Modello_01_04.html
Modello_01_current.html
MyClass1.php
MyClass2.php
PhotosGalleria.css
PhotosGalleria.html
PhotosStream.css
PhotosStream.html
RebeccaMurpheyJSBasics.js
Step_01_01.html
Step_01_02.html
StrumentiSviluppoWeb.html
StudioHomePage_01.css
StudioHomePage_01.html
ape.gif
cancellaTabellaVisitatoriRegistrati.php
canvas.css
comune.css
corniceFoto.css
corniceFoto.html
creaTabellaVisitatoriRegistrati.php
css01.html
css02.css
css02.html
css02.js
css03.css
css03.html
css04.css
css04.html
css05.css
css05.html
css06.css
css06.html
css07.html
datalist.html
dialog.html
echoParametriPost.php
echoParametriPost.txt
echo_input.php
es01.php
esempi.css
favicon.ico
formOrdinePizza.html
formOrdinePizza.php
formReg.html
formReg.js
formReg.php
formSelectQueries.html
formSelectQueries.js
formUtenti.php
forms.css
galleriaDiFoto.html
iframe01.html
index.html
infoConnessione.php
jQuery
js_01.css
js_01.html
js_01.js
js_01_new.css
js_02.css
js_02.html
js_02.js
js_03.css
js_03.html
js_03.js
js_04.css
js_04.html
js_04.js
js_05.html
js_05.js
js_06.html
js_06.js
js_07.html
js_07.js
js_08.html
js_08.js
js_09.html
js_09.js
js_10.html
js_10.js
js_DateAndTime.html
js_Functions.html
moduli.css
mostraMenuQueryTestPages.php
mostraQuery.php
new.html
new1.html
ordinePizza.php
php_01.css
php_01.php
php_02.css
php_02.js
php_02.php
php_03.js
php_03.php
php_ClassesAndObjects.php
php_ClassiEdInterfaccePredefinite.php
php_ComeLeggereUnaDichiarazioneDiFunzione.php
php_Cookies.php
php_DateAndTime.html
php_DateAndTime.js
php_Directories.php
php_ErrorHandling.php
php_Exception.php
php_FileHandling.php
php_FileUpload.php
php_Filters.php
php_FiltersAdvanced.php
php_Functions.php
php_IncludeAndRequire.php
php_Manual.js
php_Manual.php
php_MySQLDatabase.php
php_MySQL_Connect.php
php_MySQL_CreateDB.php
php_MySQL_CreateTable.php
php_MySQL_DeleteData.php
php_MySQL_GetLastID.php
php_MySQL_InsertData.php
php_MySQL_InsertMultiple.php
php_MySQL_LimitData.php
php_MySQL_Prepared.php
php_MySQL_SelectData.php
php_MySQL_UpdateData.php
php_PDO.php
php_ProgFormReg.php
php_ProgFormRegPopup.php
php_Sessions.php
php_Sessions2.php
php_arrays.html
popup01.css
popup01.html
popup01.js
popup02.js
prova di stampa.pdf
provaArrays.php
provaArrays.txt
provaAuthorStyleSheet.html
provaDateAndTime.php
provaDateAndTime.txt
provaUserAgentStyleSheet.html
prova_DateAndTime.js
registraUtente.php
select.html
selectt.html
showLoadedExtensions.php
showPHPInfo.php
tabelle.css
target.html
test.css
test.js
testHistory.html
testHistoryBack.html
test_01.css
test_01.html
test_02.css
test_02.html
test_03.css
test_03.html
test_04.css
test_04.html
test_05.css
test_05.html
test_06.css
test_06.html
test_07.html
test_08.html
test_09.html
test_10.html
test_11.html
test_12.html
test_13.html
test_input.php
testfile.txt
testfileSave.txt
testmail.php
upload.php
userContent.css
utentiRegistrati.php
webdictionary.txt
welcome.php
welcome.txt
error_log
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;
.
..
cgi-bin
classiPhp
CorsoHTML
CorsoJavaScript
CorsoPHP
download
files
images
photos
phpmyadmin
ProPiz
StorieNaturali
Template
TestPages
txt
.well-known
Files contenuti in ../
articoli.css
Articoli.html
ChiSono.html
ClaMin.js
common.css
efficienzaProduzione.html
esempi.css
esempi.html
FotoDiAnimali.html
FotoDiPiante.html
gestioneReclami.html
google56aa7042b916f2fa.html
index.css
index.html
index.js
index01.html
index02.html
index03.html
index04.html
IndexNew.html
IndexOld.html
LinguaggiWebIndex.html
MetodiStrumenti.html
Miglioramento.html
ModelliHomePage.html
nortonsw_751f84b0-daa9-0.html
nortonsw_d6f64050-c0c3-0.html
QuaSic-Formazione-Download.html
QuaSic-Formazione.html
QuaSic-Rc-NC.html
QuaSic_RC_NC_Download.html
RiferimentiDefinizioni.html
Ringraziamenti.html
sitemap.xml
StorieDiPiante.html
stub.html
SviluppoSW.html
testList.html
.htaccess
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;
.
..
.well-known
CorsoHTML
CorsoJavaScript
CorsoPHP
ProPiz
StorieNaturali
Template
TestPages
cgi-bin
classiPhp
download
files
images
photos
phpmyadmin
txt
Files contenuti in ../
.htaccess
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