PHP Academy · Oppitunti

Hakemistojen käsittely

Luetelkaa, luokaa ja poistakaa hakemistoja funktioilla scandir ja mkdir.

Oppitunti 3/413 vaihetta

Hakemistojen käsittely on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Hakemistotoiminnot PHP:ssä

PHP tarjoaa funktioita palvelimen hakemistojen luetteloimiseen, luomiseen, käsittelyyn ja poistamiseen:

  • scandir() — luettelee hakemiston sisällön
  • mkdir() — luo hakemiston
  • rmdir() — poistaa tyhjän hakemiston
  • glob() — etsii kuviota vastaavat tiedostot

scandir()

Luettelee kaikki hakemiston tiedostot ja alihakemistot:

<?php
$entries = scandir('/var/www/html/uploads');

// scandir includes '.' and '..'
$entries = array_diff($entries, ['.', '..']);

foreach ($entries as $entry) {
    echo $entry . PHP_EOL;
}

glob()-kuvioiden vastaavuus

glob() palauttaa komentotulkin tyylisen kuvion mukaiset tiedostot:

<?php
// Find all PHP files in a directory
$phpFiles = glob('/var/www/html/*.php');

// Recursively with GLOB_BRACE
$logs = glob('/var/log/{app,error,access}.log', GLOB_BRACE);

foreach ($phpFiles as $file) {
    echo basename($file) . PHP_EOL;
}

mkdir() ja käyttöoikeudet

Luokaa yksi tai useita sisäkkäisiä hakemistoja:

<?php
$dir = '/var/www/uploads/2024/05';

// Create nested directories in one call:
if (!is_dir($dir)) {
    mkdir($dir, 0755, true);  // true = recursive
    echo "Created: $dir";
}

Hakemistojen poistaminen

rmdir() poistaa vain tyhjät hakemistot. Jos haluatte poistaa sisällön sisältävän hakemiston, käyttäkää rekursiivista funktiota:

<?php
function deleteDir(string $path): void {
    foreach (scandir($path) as $entry) {
        if ($entry === '.' || $entry === '..') continue;
        $full = $path . DIRECTORY_SEPARATOR . $entry;
        is_dir($full) ? deleteDir($full) : unlink($full);
    }
    rmdir($path);
}

deleteDir('/tmp/old_cache');

Hakemiston läpikäynti DirectoryIterator-funktiolla

Oliopohjainen tapa käydä hakemiston sisältö läpi:

<?php
$dir = new DirectoryIterator('/var/www/html/images');

foreach ($dir as $info) {
    if ($info->isDot()) continue;
    echo $info->getFilename();
    echo ' (' . $info->getSize() . ' bytes)';
    echo PHP_EOL;
}

RecursiveDirectoryIterator

Käykää rekursiivisesti läpi kaikki hakemistopuun tiedostot:

<?php
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/var/www/src')
);

foreach ($iterator as $file) {
    if ($file->isDot()) continue;
    if ($file->getExtension() === 'php') {
        echo $file->getPathname() . PHP_EOL;
    }
}

getcwd ja chdir

Hakekaa nykyinen työhakemisto ja vaihtakaa sitä:

<?php
$originalDir = getcwd();
echo 'Current: ' . $originalDir . PHP_EOL;

chdir('/var/www/html');
echo 'Changed to: ' . getcwd() . PHP_EOL;

// Restore
chdir($originalDir);
echo 'Restored: ' . getcwd() . PHP_EOL;

Polkujen käsittely

Muodostakaa ja jäsentäkää tiedostopolkuja alustariippumattomien vakioiden ja funktioiden avulla:

<?php
// DIRECTORY_SEPARATOR = '/' on Unix, '\\' on Windows
$base    = '/var/www/app';
$subPath = 'uploads' . DIRECTORY_SEPARATOR . 'images';
$full    = $base . DIRECTORY_SEPARATOR . $subPath;

echo realpath($full);  // resolves symlinks

// __DIR__ is the directory of the current file
$configPath = __DIR__ . '/../config/settings.json';
echo realpath($configPath);

Levytila

Tarkistakaa käytettävissä oleva ja kokonaislevytila:

<?php
$path = '/var/www';

$free  = disk_free_space($path);
$total = disk_total_space($path);
$used  = $total - $free;

echo 'Used: ' . round($used / 1024**3, 2) . ' GB';
echo 'Free: ' . round($free / 1024**3, 2) . ' GB';
echo 'Total: ' . round($total / 1024**3, 2) . ' GB';

SPL:n väliaikaishakemisto

Käyttäkää aina sys_get_temp_dir()-funktiota oikean väliaikaishakemiston löytämiseen eri alustoilla:

<?php
$tmpDir = sys_get_temp_dir();
echo 'Temp dir: ' . $tmpDir;

// Create a unique temporary directory
$uniqueDir = $tmpDir . DIRECTORY_SEPARATOR . 'myapp_' . uniqid();
mkdir($uniqueDir, 0700);

// ... use directory ...
// cleanup when done

Pikatarkistus

Mikä PHP-funktio luo sisäkkäiset hakemistot rekursiivisesti yhdellä kutsulla?

Kertaus: hakemistojen käsittely

Hakemistotoiminnot:

  • scandir() — luettelee sisällön (mukaan lukien . ja ..)
  • glob() — etsii tiedostoja kuvion perusteella
  • mkdir($path, 0755, true) — rekursiivinen luonti
  • rmdir() — poistaa tyhjän hakemiston
  • RecursiveDirectoryIterator syvälliseen läpikäyntiin
  • __DIR__ ja DIRECTORY_SEPARATOR siirrettäviin polkuihin
Aloita maksutta

Opi PHP tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
49
Oppitunnit
195

Usein kysytyt kysymykset

Onko oppitunti ”Hakemistojen käsittely” ilmainen?

Kyllä – oppitunnin ”Hakemistojen käsittely” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Hakemistojen käsittely”?

Luetelkaa, luokaa ja poistakaa hakemistoja funktioilla scandir ja mkdir. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Hakemistojen käsittely”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?

Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tiedostojen lukeminen PHP:llä
  2. Tiedostoihin kirjoittaminen ja tietojen lisääminen
  3. Hakemistojen käsittely
  4. Tiedostojen lähetysten käsittely
← Takaisin: PHP Academy