In acest tutorial e prezentata clasa PHP DirectoryIterator, adaugata in PHP 5+.
Aceasta clasa e utila in parcurgerea unui director, pentru a obtine informatii despre fisierele si directoarele din el (nume, marime, data ultima accesare, etc.).
Ca orice alta clasa, pentru a folosi DirectoryIterator trebuie mai intai creata o instanta de obiect la aceasta clasa:
$objDI = new DirectoryIterator($path);
- $path - reprezinta calea directorului ce trebuie citit. Pentru directorul curent se poate folosi ca $path: __DIR__ , sau dirname(__FILE__).
Apoi se pot aplica metodele clasei.
- Pentru a intelege mai bine ce face DirectoryIterator , iata cateva exemple practice.

Obtine calea la fisier

- Se foloseste metoda getPath().
$objDI = new DirectoryIterator(__DIR__);
echo $objDI->getPath();           // /home/examples/public_html

Instanta la clasa DirectoryIterator contine un obiect cu date despre directoarele si fisierele din directorul accesat. Acest obiect poate fi parcurs cu o instructiune foreach(), ca sa se obtina datele fiecarui element.

Obtine numele fisierelor din directorul curent

- Se foloseste isFile() ca sa verifice daca e fisier, si getFilename() sa preia numele.
$objDI = new DirectoryIterator(__DIR__);
foreach($objDI as $fileinfo) {
  // daca e fisier
  if($fileinfo->isFile()) {
    echo $fileinfo->getFilename() .'<br/>';
  }
}

/* Returneaza ceva similar cu:
 admin.php
 coursesweb.jpg
 jquery.js
 course.html
*/

Afla marimea fisierelor

- Se foloseste isFile() ca sa verifice daca e fisier, si getSize() sa preia marimea (in bytes).
$objDI = new DirectoryIterator(__DIR__);
foreach($objDI as $fileinfo) {
  // daca e fisier
  if($fileinfo->isFile()) {
    $filesize = $fileinfo->getSize() / 1024;          // 1 KB = 1024 bytes
    echo $fileinfo->getFilename() .' '. $filesize .' KB<br/>';
  }
}

/* Returneaza ceva similar cu:
 admin.php 3.1572265625 KB
 coursesweb.jpg 11.498046875 KB
 jquery.js 122.095703125 KB
*/

Obtine numele directoarelor din cel curent

- Se foloseste isDir() sa verifice daca e director, isDot() prin care se verifica sa nu fie '.' sau '..', si getFilename() sa preia numele.
$objDI = new DirectoryIterator(__DIR__);
foreach($objDI as $fileinfo) {
  // daca e director, dar nu '.' sau '..'
  if($fileinfo->isDir() && !$fileinfo->isDot()) {
    echo $fileinfo->getFilename() .'<br/>';
  }
}

/* Returneaza ceva similar cu:
 Pages
 CoursesWeb
 Tutorials
*/

Afla permisiunile CHMOD

- Se foloseste isDot() sa nu fie '.' sau '..', si getPerms() sa preia permisiunile (in numar intreg decimal).
$objDI = new DirectoryIterator(__DIR__);
foreach($objDI as $fileinfo) {
  // daca nu e '.' sau '..'
  if(!$fileinfo->isDot()) {
    // preia octal din numar intreg decimal
    $octal_perms = substr(sprintf('%o', $fileinfo->getPerms()), -4);
    echo $fileinfo->getFilename() .' '. $octal_perms .'
'; } } /* Returneaza ceva similar cu: admin.php 0644 Pages 0755 Tutorials.html 0644 */

Verifica daca directoarele si fisierele pot fi scrise

- Se foloseste isWritable(). Returneaza True daca pot fi scrise date cu PHP in fisierul /directorul curent, altfel False.
$objDI = new DirectoryIterator(dirname(__FILE__));
foreach($objDI as $fileinfo) {
  if($fileinfo->isWritable()) {
    echo $fileinfo->getFilename() .' poate fi scris<br/>';
  }
}

/* Returneaza ceva similar cu:
 coursesweb.htm  poate fi scris
 Pages  poate fi scris
 websites.txt  poate fi scris
*/

Afla data ultimei accesari a fisierelor

- Se foloseste isFile() ca sa verifice daca e fisier, si getATime() sa preia data ultimei accesari (in Unix timestamp).
$objDI = new DirectoryIterator(dirname(__FILE__));
foreach($objDI as $fileinfo) {
  if($fileinfo->isFile()) {
    echo $fileinfo->getFilename() .' '. $fileinfo->getATime() .'<br/>';
  }
}

/* Returneaza ceva similar cu:
 coursesweb.htm  1319637336
 Pages  1319880959
 websites.txt 1327757524
*/

• Ca sa vedeti lista cu toate metodele clasei DirectoryIterator, vizitati: Clasa DirectoryIterator.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut indica faptul ca un camp de formular trebuie completat?
required="required" autofocus="autofocus" placeholder="text"
<input type="text" name="name1" required="required" />
Ce metoda CSS misoreaza sau mareste dimensiunile unui element (inclusiv continutul)?
translate() scale() skew()
#some_id:hover {
  transform: scale(2, 1.5);
  -ms-transform: scale(2, 1.5);    /* IE 9 */
  -moz-transform: scale(2, 1.5);   /* Firefox */
}
Click pe metoda obiectului Date care returneaza ziua din luna.
setDate() getMonth() getDate()
var rightnow = new Date();
var day = rightnow.getDate();
alert(day);
Ce functie este folosita pentru a incarca un fisier pe server?
is_file() move_uploaded_file() fopen()
if(move_uploaded_file($_FILES["field_name"]["tmp_name"], "dir/file_name")) {
  echo "Fisierul a fost incarcat";
}
Cum se spune in engleza expresia: "Ploua cu galeata"?
rain cats and dogs rain buckets quiet rain
In Bucharest it`s raining cats and dogs.
- In Bucuresti ploua cu galeata.
Cum se spune in spaniola expresia: "Ploua cu galeata"?
llover cubo llover a cántaros lluvia tranquila
En Madrid está lloviendo a cántaros.
- In Madrid ploua cu galeata.
DirectoryIterator - obtine informatii despre fisiere si directoare

Last accessed pages

  1. Curs si Tutoriale JavaScript (15214)
  2. Exercitii engleza - English Tests and exercises - Grammar (32024)
  3. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (43495)
  4. Verbe reflexive 1 (3039)
  5. Viitor simplu si continuu - Future Tense Simple and Continuous (22645)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2276)
  2. Curs HTML gratuit Tutoriale HTML5 (1635)
  3. Curs si Tutoriale JavaScript (1601)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1551)
  5. Curs CSS Online Tutoriale CSS3 (1435)