Itérateurs et classes (PHP5)
sebshiva
Messages postés
194
Date d'inscription
Statut
Membre
Dernière intervention
-
sebshiva Messages postés 194 Date d'inscription Statut Membre Dernière intervention -
sebshiva Messages postés 194 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie d'apprendre à manipuler les itérateurs en parallèle de mon entrée dans le monde merveilleux de la POO en PHP5...
Je vois ceci chez wikipedia "Le plus souvent l'itérateur est conçu en même temps que la classe-conteneur qu'il devra parcourir, et ce sera le conteneur lui-même qui créera et distribuera les itérateurs pour accéder à ses éléments", et il se trouve que c'est ce que j'essaie de faire mais sans succès depuis deux jours maintenant et là... je craque...
Je ne vais pas balancer du code tout de suite mais si quelqu'un se sent de m'expliquer... il ferais de moi un homme heureux ;)
J'essaie d'apprendre à manipuler les itérateurs en parallèle de mon entrée dans le monde merveilleux de la POO en PHP5...
Je vois ceci chez wikipedia "Le plus souvent l'itérateur est conçu en même temps que la classe-conteneur qu'il devra parcourir, et ce sera le conteneur lui-même qui créera et distribuera les itérateurs pour accéder à ses éléments", et il se trouve que c'est ce que j'essaie de faire mais sans succès depuis deux jours maintenant et là... je craque...
Je ne vais pas balancer du code tout de suite mais si quelqu'un se sent de m'expliquer... il ferais de moi un homme heureux ;)
A voir également:
- Itérateurs et classes (PHP5)
- Logiciel de chronométrage et classement gratuit - Télécharger - Sport
- Comment sont classés les amis sur facebook - Guide
- C'est quoi les jeux classés sur plato - Forum jeux en ligne
- Comment faire des classes sur excel ✓ - Forum Excel
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? - Forum Programmation
Voila, j'essaie de mettre en place une classe de recherche de fichier ou de contenu de fichier.
voici comment je procède:
1 classe abstraite qui liste récursivement le répertoire visé:
var_dump de sortie (et donc ce que récupère la classe suivante):
viens ensuite la fameuse classe de recherche
?>
mon soucis, c'est qu'au moment des comparaisons (je ne me concentre pour l'instant que des nom de fichier)
mon itérateur me renvoi
0 => Array
Path => martien/js
FileName => js.js
Path => martien/test
FileName => test.txt~
Path => martien/test
FileName => test.txt
Path => martien
FileName => index.php
Path => martien/requests
FileName => cherche.php
Path => martien/cls
FileName => styles_gepo.css
Path => martien/cls
FileName => buildform.cls.php
c'est très bien, mais je veux comparer les nom de fichier et conserver le PATH... j'espère que vous comprenez mon problème (le code me parait parlant)....
Merci de m'éclairer avant que je trouve une corde...
je remet la seconde classe en réduisant l'indentation
<?php
class SearchStringOrName extends RecursiveReadDir {
public $FindArray=array();
public $FindResult=array();
public $FileNameSearch;
protected $NbFind=0;
public function __construct($Recherche,$TypeFind,$Dir) {
if ((empty($Recherche))||(empty($TypeFind))||(empty($Dir)))
throw new MyException ('paramètre manquant');
}
public function searchStrOrName($Recherche,$TypeFind,$Dir) {
$this->FindArray = parent::PathList($Dir);
$ar = new ArrayObject($this->FindArray);
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($ar));
while($it->valid()) {
if ($TypeFind==='FileName') {
echo $it->key() . ' => ' . $it->current() . ' => '.$it->getDepth ().'<br/>';
if ((strpos($it->current(),$Recherche))&&($it->key()==='FileName')) {
$this->FindResult[$this->NbFind][$it->key()]=$it->current();
$it->next();
$this->FindResult[$this->NbFind][$it->key()]=$it->current();
}
}
if ($TypeFind==='FileContent') {
$ContFile=file_get_contents(settype($it->current(),'string'));
if(ereg("$Recherche(.{0,40})",$ContFile,$sortie)) {
$this->FindResult[$this->NbFind][$it->key()]=$sortie[0];
$this->FindResult[$this->NbFind][$it->key()]=$it->current();
}
}
$this->NbFind++;
$it->next();
}
return($this->FindResult);
}
}
?>