Tiedostot
\Pike\FileSystem
on abstraktio yleisimpien php-natiivien tiedostonhallintafunktioiden (is_dir()
, file_get_contents()
) ympärille.
use \Pike\Interfaces\FileSystemInterface;
final class MyCtrl {
public function __construct(FileSystemInterface $fs) {
$this->fs = $fs;
}
// tai..
public function myMethod(FileSystemInterface $fs): void {
// tee jotain $fs:llä
}
}
Sisällysluettelo
- Tiedoston luominen, tiedostoon kirjoittaminen
- Tiedoston lukeminen
- Tiedoston poistaminen
- Tiedoston kopioiminen
- Tiedoston nimeäminen tai siirtäminen
- Kansion luominen
- Kansion poistaminen
- Tiedostopolun tarkistaminen
- Kansiopolun tarkistaminen
- Kansion sisällön lukeminen (ei-rekursiivinen)
- Kansion sisällön lukeminen (rekursiivinen)
- Tiedoston viimeisimmän modifikaation lukeminen
- Polun normalisointi
Tiedoston luominen, tiedostoon kirjoittaminen
$numBytesWritten = $fs->write(__DIR__ . '/tiedosto.txt', 'Sisältö');
if ($numBytesWritten !== false)
; // ok
else
; // Handlaa failure
Tiedoston lukeminen
$contents = $fs->read(__DIR__ . '/tiedosto.txt');
if ($contents !== false)
; // ok
else
; // Handlaa failure
Tiedoston poistaminen
$ok = $fs->unlink(__DIR__ . '/tiedosto.txt');
if ($ok)
; // ok
else
; // Handlaa failure
Tiedoston kopioiminen
Kohdepolun kansio tulee olla olemassa. Jos kohdetiedosto on jo olemassa, se ylikirjoitetaan.
$ok = $fs->copy(__DIR__ . '/tiedosto.txt', __DIR__ . '/copied.txt');
if ($ok)
; // ok
else
; // Handlaa failure
Tiedoston nimeäminen tai siirtäminen
Jos kohdetiedosto on jo olemassa, se ylikirjoitetaan.
$ok = $fs->rename(__DIR__ . '/vanha.txt', __DIR__ . '/uusi.txt');
if ($ok)
; // ok
else
; // Handlaa failure
Kansion luominen
$perms = 0755; // oletus 0777
$recursive = false; // oletus true
$ok = $fs->mkDir(__DIR__ . '/kansio', $perms, $recursive);
if ($ok)
; // ok
else
; // Handlaa failure
Kansion poistaminen
$ok = $fs->rmDir(__DIR__ . '/kansio');
if ($ok)
; // ok
else
; // Handlaa failure
Tiedostopolun tarkistaminen
$isFile = $fs->isFile(__DIR__ . '/tiedosto.txt');
if ($isFile)
; // on tiedosto
else
; // ei ole tiedosto
Kansiopolun tarkistaminen
$isDir = $fs->isDir(__DIR__ . '/kansio');
if ($isDir)
; // on kansio
else
; // ei ole kansio
Kansion sisällön lukeminen (ei-rekursiivinen)
$globPattern = '*.txt'; // oletus '*',
$globFlags = null; // oletus GLOB_ERR
$fullFilePaths = $fs->readDir(__DIR__ . '/kansio', $globPattern, $globFlags);
if ($fullFilePaths !== false)
echo $fullFilePaths[0] ?? ''; // /htdocs/projekti/kansio/foo.txt
else
; // Handlaa failure
Kansion sisällön lukeminen (rekursiivinen)
$regexpPattern = '/^.*\.(js|css)$/';
$flags = \FilesystemIterator::CURRENT_AS_PATHNAME; // ks. php.net/manual/en/recursivedirectoryiterator.construct.php
$fullFilePaths = $fs->readDirRecursive(__DIR__ . '/kansio', $regexpPattern, $flags);
if ($fullFilePaths)
echo $fullFilePaths[0]; // /htdocs/projekti/kansio/alikansio/foo.js
else
; // $fullFilePaths === [], tee jotain
Tiedoston viimeisimmän modifikaation lukeminen
$unixTime = $fs->lastModTime(__DIR__ . '/tiedosto.txt');
if ($unixTime !== false)
; // Tee jotain $unixTimella
else
; // Handlaa failure
Polun normalisointi
$notNormalized = __DIR__ . '/foo/'; // c:\kansio\alikansio/foo/
$normalized = FileSystem::normalizePath($notNormalized);
echo $normalized; // c:/kansio/alikansio/foo