Bonjour à tous,
J'ai voulu me lancer à la spl ( soyons fou tiens) en commencant par DirectoryIterator.
voici une ancienne fonction que j'avais :
/** methode de parcours d'un dossier ou les rapports ont deja ete generées et dans lequel on ne cherche que des fichiers pdf ou doc , il suffit de mettre l'extension du fichier desiré en deuxieme arguement
* la methode retourne le listing des fichiers trouvés sous forme d'un tableau
**/
function AfficheFichier($sCheminVersRapportAEnvoyer,$sFiltre){
static $aMyArray=array();
if ($pDirectory = opendir($sCheminVersRapportAEnvoyer)) {// opendir nous renvoit un pointeur sur le dossier
// on initiliase
while (false !== ($sFile = readdir($pDirectory))){
//je ne dois convertir que les fichiers .doc en .pdf car il se peut qu'il y ait des fichiers .pdf
//$sExtensionFile renvoit une chaine de carctere ie doc ou pdf ou jpg
$sExtensionFile=pathinfo($sFile,PATHINFO_EXTENSION);
if ($sFile != "." && $sFile != "..") {
if ($sExtensionFile == $sFiltre){
// for debug wb_message_box($window, $sFile,"fichier",WBC_INFO);
$aMyArray[]=$sFile;
}
}
}// fin du while
closedir($pDirectory);// je ferme le handle de manipulation du dossier qui contient les cartes ernt
return $aMyArray;
}else{
wb_message_box($window,'Listage des fichiers impossible','Répertoire illisible',WBC_INFO);
}
}
et voici avec DirectoryIterator :
//on etend la classe directoyinterator afin de creer une methode qui nous permettent de retourner l'extension d'un fichier **/
class MyDirectoryIterator extends DirectoryIterator implements Iterator {
public function GetExtensionOfFile(){
/** avec la spl plus besoin de passer la variable du nom de fichier à tester car on le recupere le fichier courant (parcourut par notre boucle foreach) avec la methode GetFileName()
* cette methode etant disponible dans la classe parente DirectoryIterator , on fait appel à elle par parent::getFilename()
**/
$sFilename = parent::getFilename();
//on commence par utiliser la methode isFile issue de la classe parente DirectoryIterator pour verifier que nous sommes bien en presence d'un fichier
if ( TRUE === parent::isFile($sFilename)){
//on recupere l'extension du fichier
$sExtensionFile=pathinfo($sFilename,PATHINFO_EXTENSION);
return $sExtensionFile;
}
}
}
/** fonction d'affichage du contenu d'un fichier avec la spl **/
function AfficheFichierWithSpl($sCheminVersRapportAEnvoyer,$sFiltre){
static $aMyArray=array();
foreach (new MyDirectoryIterator($sCheminVersRapportAEnvoyer) as $sValeurFile){
if(TRUE === $sValeurFile->isDot() ) // on supprime les dossiers donc . et ..
{
if ( $sFiltre === $sValeurFile->GetExtensionOfFile())
$aMyArray[] = $sValeurFile; // on ne recupere que les fichiers dont les extensions sont definies par $sFiltre ( doc ou pdf ou jpg et on les renvoit sous forme d'un tableau
}
}
return $aMyArray;
}
Mais voila ca ne marche pas et je n'ai aucun moyen de debuguer ca.
Quelqu'un peut il m'aiguiller.
ps : je commence juste avec la spl