Hakemistojen käsittely
Luetelkaa, luokaa ja poistakaa hakemistoja funktioilla scandir ja mkdir.
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önmkdir()— luo hakemistonrmdir()— poistaa tyhjän hakemistonglob()— 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 donePikatarkistus
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 perusteellamkdir($path, 0755, true)— rekursiivinen luontirmdir()— poistaa tyhjän hakemiston- RecursiveDirectoryIterator syvälliseen läpikäyntiin
__DIR__jaDIRECTORY_SEPARATORsiirrettäviin polkuihin
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
- Tiedostojen lukeminen PHP:llä
- Tiedostoihin kirjoittaminen ja tietojen lisääminen
- Hakemistojen käsittely
- Tiedostojen lähetysten käsittely