webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 2009
-
10 avril 2008 à 14:09
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
14 avril 2008 à 17:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 14 avril 2008 à 17:20
je vois ce que tu veux dire, mais le fait que la spl soit là t'évite les tracas de faire un readdir ($resource) === false etc
tu fait juste un
foreach ($oDirectoryIt as $sKey=>$sValue) { // et hop ! }
de plus tu a les fonctions isDot, bien sympa pour éviter les "." et ".." et quelques autres avatanges. Ca relève peut-etre plus du namespace, mais au final en quoi c'est genant ? la classe sert pour ce à quoi elle doit servir, c'est parfait.
Apres c'est vrai que dans ton cas, pour l'attente que tu en as, c'est peut-etre d'un autre niveau que la spl ne te permet pas, mais la désolé j'ai pas les compétences nécéssaires pour comparer à du c++.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 11 avril 2008 à 10:37
sisi, je pourrais, j'utilise regulierement la spl, mais plus pour des choses genre countable, arrayacces, itterator, ce genre de choses...
http://www.php.net/~helly/php/ext/spl/
en fait, c'est une partie que je trouve mal concue...
meme pour les itterateurs, le typage de php fait que c'est bordelique, comme on a pas les generiques en php (normal vu le style du langage), bah tu fais un itterator sur n'importe quoi, t'as toujours un n'importe qui comme type de retour, tu ne peux pas faire comme la STL du Cpp genre vector, ou des choses du genre... ca en php, c'est pas possible...
faire un itterator<MonObjetPerso> ca peut sembler useless... mais par contre, quand j'avais teste la directoryitterator, j'avais pas vu un langage oriente objet... j'y avais vu un namespace...
pourquoi ?
parce-que tu ne peux pas dire a ton directoryitterator de creer des objets de ton propre type...
personellement, j'avais besoin d'un truc qui me sorte plus d'infos sur les fichiers que la splFileInfo en donnait pour faire mon projet....
class MonFichier extends SplFileInfo
mais en fait, le probleme, c'est que le directoryitterator, lui il ne fait pas de classes personalises, il se contente d'un simple SplFileInfo...
autant mettre ces classes avec un attribut final, et dire "si tu veux faire semblant de faire de l'objet, utilise moi"
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 11 avril 2008 à 10:14
@Coucou : Tu utilse quelle version de php ? car php5, avec la classe DirectoryIterator, te permet de parcourir un dossier très facilement et plus agréablement qu'avec opendir et readdir :)
cs_depression
Messages postés100Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention13 juillet 2009 11 avril 2008 à 09:00
Merci pour cette source :-)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 11 avril 2008 à 08:54
:) merci.
pour urlencode, ouais, je sais pas pourquoi, mais ca passait mal...
pour $a, $b, $c, c'est un de mes gros defauts en prog...
c'est un simple utilitaire pas forcement tres bien code, je l'ai mis comme ca parce-que meme imparfait, il ne presente pas de grosses erreurs, et conserve son utilite :)
j'utilise en general fvwm ou gnome, mais toujours nautilus (sauf pour le sftp ou j'utilise alors konqueror), ca depend des periodes en fait, faudrait que je prenne le temps de scripter (un peu plus) pour fvwm.
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 11 avril 2008 à 01:23
Salut coucou747,
Bon j'ai (étonnament) quelques remarques. Les mêmes que l'usuel et je suis certain que tu vas trouvé à me contredire, mais je les signales quand même :P
Bon déja substr($b, strlen($b)-3) peut être remplacé par substr($b,-3) (au passage, si l'image a une extension .jpeg ton script le voit pas alors que c'est valide, c'est donc mieu d'isoler l'extension)
Ensuite {0}, il serait judicieux d'utiliser les [ ] plutot. Pour la compatibilité éventuelle avec php6 qui ne les auras pu (entre autre) mais je sais que cet argument la vaut rien, c'était une remarque au passage.
Il y a aussi les comparaison === lorsque tu compare un même type. Si je le signale c'est parce que des fois tu l'utilises et des fois non, donc manque de constance.
Ta fonction encode à quel intêret sachant que urlencode remplace tous les chars spéciaux d'une chaine alors que la tiennes en fait juste quelques uns ? Je crois comprendre que c'est à cause des slash que urlencode convertirait ? Mais du coup certains caractères que tu ne remplace pas (comme ; à ç ^ @=? " ' , la plupart des car ASCII passe dans le nom d'un fichier unix je crois) vont nuire au bon fonctionnement non ?
Dernière chose: tes variables a, b, c, et compagnie: Ça serait mieu de leurs donner un noms représentatif de leur valeur. Il me semble que c'est une des premières règles à respecter quand on développe sinon on s'y perd...
Bon c'était juste des petits trucs comme ça parce que ton code dans l'ensemble ya rien à redire... Code original même si moi je préfère xfce, ça fait changement des codes récurrent sur ce site.
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 10 avril 2008 à 14:09
A titre d'information tu aurais pu gérer la récupération de l'extension du fichier à partir de la fonction pathinfo() et sa constante PATHINFO_EXTENSION.
14 avril 2008 à 17:20
tu fait juste un
foreach ($oDirectoryIt as $sKey=>$sValue) { // et hop ! }
de plus tu a les fonctions isDot, bien sympa pour éviter les "." et ".." et quelques autres avatanges. Ca relève peut-etre plus du namespace, mais au final en quoi c'est genant ? la classe sert pour ce à quoi elle doit servir, c'est parfait.
Apres c'est vrai que dans ton cas, pour l'attente que tu en as, c'est peut-etre d'un autre niveau que la spl ne te permet pas, mais la désolé j'ai pas les compétences nécéssaires pour comparer à du c++.
11 avril 2008 à 10:37
http://www.php.net/~helly/php/ext/spl/
en fait, c'est une partie que je trouve mal concue...
meme pour les itterateurs, le typage de php fait que c'est bordelique, comme on a pas les generiques en php (normal vu le style du langage), bah tu fais un itterator sur n'importe quoi, t'as toujours un n'importe qui comme type de retour, tu ne peux pas faire comme la STL du Cpp genre vector, ou des choses du genre... ca en php, c'est pas possible...
faire un itterator<MonObjetPerso> ca peut sembler useless... mais par contre, quand j'avais teste la directoryitterator, j'avais pas vu un langage oriente objet... j'y avais vu un namespace...
pourquoi ?
parce-que tu ne peux pas dire a ton directoryitterator de creer des objets de ton propre type...
personellement, j'avais besoin d'un truc qui me sorte plus d'infos sur les fichiers que la splFileInfo en donnait pour faire mon projet....
class MonFichier extends SplFileInfo
mais en fait, le probleme, c'est que le directoryitterator, lui il ne fait pas de classes personalises, il se contente d'un simple SplFileInfo...
autant mettre ces classes avec un attribut final, et dire "si tu veux faire semblant de faire de l'objet, utilise moi"
11 avril 2008 à 10:14
11 avril 2008 à 09:00
11 avril 2008 à 08:54
pour urlencode, ouais, je sais pas pourquoi, mais ca passait mal...
pour $a, $b, $c, c'est un de mes gros defauts en prog...
c'est un simple utilitaire pas forcement tres bien code, je l'ai mis comme ca parce-que meme imparfait, il ne presente pas de grosses erreurs, et conserve son utilite :)
j'utilise en general fvwm ou gnome, mais toujours nautilus (sauf pour le sftp ou j'utilise alors konqueror), ca depend des periodes en fait, faudrait que je prenne le temps de scripter (un peu plus) pour fvwm.
11 avril 2008 à 01:23
Bon j'ai (étonnament) quelques remarques. Les mêmes que l'usuel et je suis certain que tu vas trouvé à me contredire, mais je les signales quand même :P
Bon déja substr($b, strlen($b)-3) peut être remplacé par substr($b,-3) (au passage, si l'image a une extension .jpeg ton script le voit pas alors que c'est valide, c'est donc mieu d'isoler l'extension)
Ensuite {0}, il serait judicieux d'utiliser les [ ] plutot. Pour la compatibilité éventuelle avec php6 qui ne les auras pu (entre autre) mais je sais que cet argument la vaut rien, c'était une remarque au passage.
Il y a aussi les comparaison === lorsque tu compare un même type. Si je le signale c'est parce que des fois tu l'utilises et des fois non, donc manque de constance.
Ta fonction encode à quel intêret sachant que urlencode remplace tous les chars spéciaux d'une chaine alors que la tiennes en fait juste quelques uns ? Je crois comprendre que c'est à cause des slash que urlencode convertirait ? Mais du coup certains caractères que tu ne remplace pas (comme ; à ç ^ @=? " ' , la plupart des car ASCII passe dans le nom d'un fichier unix je crois) vont nuire au bon fonctionnement non ?
Dernière chose: tes variables a, b, c, et compagnie: Ça serait mieu de leurs donner un noms représentatif de leur valeur. Il me semble que c'est une des premières règles à respecter quand on développe sinon on s'y perd...
Bon c'était juste des petits trucs comme ça parce que ton code dans l'ensemble ya rien à redire... Code original même si moi je préfère xfce, ça fait changement des codes récurrent sur ce site.
10 avril 2008 à 14:09