94 lignes
Pas d'EOL
3,6 Kio
PHP
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;
|
|
}
|
|
|
|
} |