HelloCSE/app/Http/Utility/ioUtility.php
2024-04-10 13:56:22 +02:00

94 lignes
Pas d'EOL
3,6 Kio
PHP

<?php
namespace App\Http\Utility;
/**
* Classe contenant quelques fonctions utiles d'entrées / sorties
*/
class ioUtility{
/**
* Permet de chercher des fichiers récursivement ou non à l'intérieur
* d'un dossier.
*
* @param string $path : Chemin du dossier à analyser.
* @param string $pattern : Modèle de chaîne à chercher pour la regExp :
* #($pattern)$#i
* @param boolean $recusive : Permet de rechercher récursivement ou non
* le modèle de chaîne.
*
* @return mixed : Soit un tableau listant les fichiers,
* soit null.
*/
public static function find($path=null,$pattern=null,$recusive=true){
if(!is_null($path) && is_dir($path)){
$files = array();
if($recusive){
$files = self::findRecursively($path, $pattern);
}else{
$fileToFind = $path.$pattern;
$files = ( file_exists($fileToFind) && is_file($fileToFind) && is_readable($fileToFind) ) ? glob($fileToFind) : null;
}
return $files;
} else {
return null;
}
}
/**
* Permet de chercher des fichiers récursivement à l'intérieur
* d'un dossier.
*
* @param string $path : Chemin du dossier à analyser.
* @param string $pattern : Modèle de chaîne à chercher pour la regExp :
* #($pattern)$#i
*
* @return mixed : Soit un tableau listant les fichiers, soit null.
*/
public static function findRecursively($path=null,$pattern=null){
if(!is_null($path) && is_dir($path)){
$files = array();
$curDirectory = new \RecursiveDirectoryIterator($path);
$curIterator = new \RecursiveIteratorIterator($curDirectory);
if(is_null($pattern)){
$files = self::getFilesFromIterator($curIterator);
}else{
$regExp = '#('.$pattern.')$#i';
$curPattern = new \RegexIterator($curIterator, $regExp);
$files = self::getFilesFromIterator($curPattern);
}
return $files;
} else {
return null;
}
}
/**
* Permet de récupérer la liste des fichiers selon un itérateur.
*
* @param iterable $iterator : Iterateur contenant les datas.
* @return array : Tableau listant les fichiers trouvés, ou non (vide).
*/
private static function getFilesFromIterator($iterator=null){
$files = array();
if(!is_null($iterator)){
$iterator = iterator_to_array($iterator);
foreach ($iterator as $info) {
$files[] = $info->getPathname();
}
}
return $files;
}
/*
* Permet de vérifier si une chaîne est un flux JSON.
*
* @param string $string : Chaîne à analyser.
* @return boolean : true si la chaîne est un flux JSON, false sinon.
*/
public static function isJSON($string){
return is_string($string) && is_array(\json_decode($string, true)) && (\json_last_error() == JSON_ERROR_NONE) ? true : false;
}
}