modifs.mineures sans commentaires
This commit is contained in:
parent
bc115a3e6c
commit
6441d82e0d
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
namespace nur\sery\os;
|
||||||
|
|
||||||
|
use nur\sery\os\file\FileReader;
|
||||||
|
use nur\sery\os\file\FileWriter;
|
||||||
|
use nur\sery\os\file\SharedFile;
|
||||||
|
use nur\sery\os\file\TmpfileWriter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class file: outils pour gérer les fichiers
|
||||||
|
*/
|
||||||
|
class file {
|
||||||
|
static function reader($input, ?callable $func=null): FileReader {
|
||||||
|
$reader = new FileReader($input);
|
||||||
|
if ($func !== null) {
|
||||||
|
try {
|
||||||
|
$func($reader);
|
||||||
|
} finally {
|
||||||
|
$reader->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function writer($output, ?callable $func=null): FileWriter {
|
||||||
|
$writer = new FileWriter($output);
|
||||||
|
if ($func !== null) {
|
||||||
|
try {
|
||||||
|
$func($writer);
|
||||||
|
} finally {
|
||||||
|
$writer->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function tmpwriter($destdir=null, ?callable $func=null): TmpfileWriter {
|
||||||
|
$tmpwriter = new TmpfileWriter($destdir);
|
||||||
|
if ($func !== null) {
|
||||||
|
try {
|
||||||
|
$func($tmpwriter);
|
||||||
|
} finally {
|
||||||
|
$tmpwriter->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function shared($file, ?callable $func=null): SharedFile {
|
||||||
|
$shared = new SharedFile($file);
|
||||||
|
if ($func !== null) {
|
||||||
|
try {
|
||||||
|
$func($shared);
|
||||||
|
} finally {
|
||||||
|
$shared ->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,8 +18,9 @@ class path {
|
||||||
* - retourner la valeur null inchangée
|
* - retourner la valeur null inchangée
|
||||||
* - retourner '.' pour un chemin vide
|
* - retourner '.' pour un chemin vide
|
||||||
*/
|
*/
|
||||||
static final function normalize(?string $path): ?string {
|
static final function normalize($path): ?string {
|
||||||
if ($path === null) return null;
|
if ($path === null || $path === false) return null;
|
||||||
|
$path = strval($path);
|
||||||
if ($path !== "") {
|
if ($path !== "") {
|
||||||
if (substr($path, 0, 2) == "~/") {
|
if (substr($path, 0, 2) == "~/") {
|
||||||
$path = sh::homedir().substr($path, 1);
|
$path = sh::homedir().substr($path, 1);
|
||||||
|
@ -53,15 +54,9 @@ class path {
|
||||||
return $path !== ""? $path: ".";
|
return $path !== ""? $path: ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Comme normalize() mais retourner inchangée la valeur false */
|
|
||||||
static final function with($path) {
|
|
||||||
if ($path === null || $path === false) return $path;
|
|
||||||
else return self::normalize(strval($path));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** obtenir le chemin absolu normalisé correspondant à $path */
|
/** obtenir le chemin absolu normalisé correspondant à $path */
|
||||||
static final function abspath($path, ?string $cwd=null) {
|
static final function abspath($path, ?string $cwd=null): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
$path = strval($path);
|
$path = strval($path);
|
||||||
if (substr($path, 0, 1) !== "/") {
|
if (substr($path, 0, 1) !== "/") {
|
||||||
if ($cwd === null) $cwd = getcwd();
|
if ($cwd === null) $cwd = getcwd();
|
||||||
|
@ -125,12 +120,10 @@ class path {
|
||||||
* @throws IOException si le chemin n'existe pas ou si une autre erreur se
|
* @throws IOException si le chemin n'existe pas ou si une autre erreur se
|
||||||
* produit
|
* produit
|
||||||
*/
|
*/
|
||||||
static final function realpath($path) {
|
static final function realpath($path): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
$path = strval($path);
|
$path = strval($path);
|
||||||
$realpath = realpath($path);
|
return IOException::ensure_value(realpath($path));
|
||||||
if ($realpath === false) throw IOException::last_error();
|
|
||||||
return $realpath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -141,13 +134,14 @@ class path {
|
||||||
* dirname("filename") === ".";
|
* dirname("filename") === ".";
|
||||||
*/
|
*/
|
||||||
static final function dirname($path): ?string {
|
static final function dirname($path): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
else return dirname(strval($path));
|
else return dirname(strval($path));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** obtenir le nom du fichier sans son chemin */
|
/** obtenir le nom du fichier sans son chemin */
|
||||||
static final function filename($path): ?string {
|
static final function filename($path): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
|
$path = strval($path);
|
||||||
$index = strrpos($path, "/");
|
$index = strrpos($path, "/");
|
||||||
if ($index !== false) $path = substr($path, $index + 1);
|
if ($index !== false) $path = substr($path, $index + 1);
|
||||||
return $path;
|
return $path;
|
||||||
|
@ -155,7 +149,7 @@ class path {
|
||||||
|
|
||||||
/** obtenir le nom de base du fichier (sans son chemin et sans l'extension) */
|
/** obtenir le nom de base du fichier (sans son chemin et sans l'extension) */
|
||||||
static final function basename($path): ?string {
|
static final function basename($path): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
$basename = self::filename($path);
|
$basename = self::filename($path);
|
||||||
$index = strrpos($basename, ".");
|
$index = strrpos($basename, ".");
|
||||||
if ($index !== false) $basename = substr($basename, 0, $index);
|
if ($index !== false) $basename = substr($basename, 0, $index);
|
||||||
|
@ -164,7 +158,7 @@ class path {
|
||||||
|
|
||||||
/** obtenir l'extension du fichier. l'extension est retournée avec le '.' */
|
/** obtenir l'extension du fichier. l'extension est retournée avec le '.' */
|
||||||
static final function ext($path): ?string {
|
static final function ext($path): ?string {
|
||||||
if ($path === null || $path === false) return $path;
|
if ($path === null || $path === false) return null;
|
||||||
$ext = self::filename($path);
|
$ext = self::filename($path);
|
||||||
$index = strrpos($ext, ".");
|
$index = strrpos($ext, ".");
|
||||||
if ($index === false) $ext = "";
|
if ($index === false) $ext = "";
|
||||||
|
@ -174,8 +168,9 @@ class path {
|
||||||
|
|
||||||
/** découper le chemin entre sa partie "répertoire" et "fichier" */
|
/** découper le chemin entre sa partie "répertoire" et "fichier" */
|
||||||
static final function split($path): array {
|
static final function split($path): array {
|
||||||
if ($path === null || $path === false) return [$path, $path];
|
if ($path === null || $path === false) return [null, null];
|
||||||
elseif ($path === "") return ["", ""];
|
elseif ($path === "") return ["", ""];
|
||||||
|
$path = strval($path);
|
||||||
$index = strrpos($path, "/");
|
$index = strrpos($path, "/");
|
||||||
if ($index !== false) {
|
if ($index !== false) {
|
||||||
if ($index == 0) $dir = "/";
|
if ($index == 0) $dir = "/";
|
||||||
|
|
Loading…
Reference in New Issue