malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 27 févr. 2006 à 12:08
C'est de l'optimisation, ça ?
Lol, en l'occurence, ma version est plus rapide.
Et j'explique :
"J'ai remplacé : while (false !($file readdir($rep)))
Par :
while ($file = readdir($rep))
"
> tu as grand tort ;-) Partce que si tu as un répertoire ou un fichier s'appellant '0', ta fonction, avec ta version, va s'aarrêter...'0' = false en php. Donc la condition de ton while ne sera plus remplie.
Mais, en php, '0' !== false (on teste sur le type).
Idem pour la 2ème réflexion :
"Et :
if ($recursif === true)
Par :
if ($recursif)""Raison : Etant donné que les tests sont fait sur des variables (ou méthodes) qui sont (ou retournent) des bouléens, ce n'est pas la peine de vérifier $true (ou $false) et != $true (ou != $false)"
Certes, sauf que lorsqu'on code, on essaye d'être strict : tu attends un booleen, true, ou false. Donc, tu testes que c'en est bien un. Et encore une fois, avec ton code, je peux passer 'bla' au lieu de true, ton code prendra ça comme un true. Ce qui est incorrect.
D'ailleurs, si tu avais testé le type correctement, tu te serais rendu compte, dans ta 1ère version, que ta fonction ne rentrait pas dans l'appel rtécursif : tu avais inversé, dans l'appel récursif, le true et le chemin du sous-répertoire. Or, ta fonction a pris ce chemin comme équivalent à true puisque tu ne précisais pas ce que tu attendais.
Or, si $recursif = 'dir/sous-dir', if ($recursif) renvoie true.
WhiteDwarf
Messages postés510Date d'inscriptionsamedi 29 décembre 2001StatutMembreDernière intervention23 mai 2008 26 févr. 2006 à 19:08
Premièrement je nepense pas que l'on puisse directement dans l'intitulé de la fontcion enter une variable et directement donner sa valeur, ca ne marche pas comme ca...
cs_darkduck
Messages postés138Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention29 février 20081 27 févr. 2006 à 01:19
Premièrement je nepense pas que l'on puisse directement dans l'intitulé
de la fontcion enter une variable et directement donner sa valeur, ca
ne marche pas comme ca...
Si ça marche comme ça, qd on met une
valeur dans l'intitulé de la fonction, ça permet de donner une valeur
par défaut à la variable passée en paramettre ce qui fait que si on ne
lui donne pas de valeur dans l'appel, elle prend la valeur "par défaut"
Ex :
Si j'appelle recup_repertoires(&$liste_repertoires)
$dir sera égal à './'
$récursif sera égal à true
$inc sera égal à 0
Alors que si j'appelle recup_repertoires(&$liste_repertoires, 'mon_repertoire/', false)
$dir sera égal à 'mon_repertoire/'
$récursif sera égal à false
$inc sera égal à 0
Espérant en avoir aidé plus d'un.....
...je n'ai cependant toujours pas la réponse à ma question (pourquoi is_dir($file) retourne false quand $file est un sous-repertoire alors que is_dir($file) retourne true, quand $file est un répertoire "simple" ?)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Raison : Etant donné que les tests sont fait sur des variables
(ou méthodes) qui sont (ou retournent) des bouléens, ce n'est pas la
peine de vérifier $true (ou $false) et != $true (ou != $false)
WhiteDwarf
Messages postés510Date d'inscriptionsamedi 29 décembre 2001StatutMembreDernière intervention23 mai 2008 27 févr. 2006 à 13:36
Waaa, on apprends des trucs tous les jours en tout cas très instructif, bon code bravo et merci, je vais faire quelques modifs sur mon "Web FTP" ... :p
@++
----------------------
La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler
-----------------