cs_guismo1er
Messages postés76Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention12 mars 2009
-
12 mars 2009 à 22:24
dark_nemo
Messages postés16Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention23 septembre 2010
-
12 nov. 2009 à 19:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
dark_nemo
Messages postés16Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention23 septembre 2010 12 nov. 2009 à 19:28
stefpei>>
Désolé de répondre aussi tard. Pour filter, selon la date il faut juste récupérer la date de modification du fichier avec la fonction filemtime (elle retourne un timestamp) et faire un test conditionnel avec.
Modifier la ligne 12 par :
function clear_folders($folder,$exts_array=array(),$files_array=array(),$lifetime=null,$recursive=true)
valneandre >> Si ma fonction est utile j'en suis content ^^ glob est pas mal, il faut penser à vérifier que la fonction est active (j'ai eu le cas d'un hébergeur qui l'avait désactivé de base)
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 13 oct. 2009 à 16:05
Bien pratique pour comprendre et appliquer la récursivité. J'en étais resté à "Mes ancêtres sont mon père et ses ancêtres"...
Par ailleurs, je compte récrire cette intéressante fonction en utilsant glob() plutôt que opendir() et readdir(). Je poste un comment dès que c'est au point.
Merci à tous ceux qui font l'effort d'enseigner.
stefpei
Messages postés1Date d'inscriptionlundi 31 mars 2008StatutMembreDernière intervention16 mars 2009 16 mars 2009 à 08:58
Très pratique ce code...
Si en plus on pouvait nettoyer des fichiers en fonction de leur date se serait super
(exemple : supprimer tout ce qui est vieux de plus de 3 mois...)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 mars 2009 à 22:47
Les ptites sources objet... c'est les sourceds à but didactique dont je parlais. Par exemple, sans vouloir me mettre en avant, la source que j'ai écrite et qui s'appelle String Iterator.
Lire la source (non documentée, certes, mais...) et les commentaires (...commentée par la suite) permet, je pense, de comprendre le fonctionnement d'un itérateur.
Sinon, j'ai bien compris la raison pour laquelle tu as publié cette source, et je ne remets pas ça en question. Je ne suis pas allé plus loin que l'utilisation de opendir() et readdir().
Je constate quand même (et ça fait plaisir) que tu les utilises correctement (c'est à dire en faisant une comparaison stricte avec false).
Maintenant, libre à chacun de continuer à développer en PHP3 ou de passer 2 (voire 3) vitesses au dessus... ;)
dark_nemo
Messages postés16Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention23 septembre 2010 13 mars 2009 à 22:35
Tu as raison sur le fait qu'il faut évoluer. Nous évoluons tous jour après jour.
De plus il est vrai que la programmation objet n'est pas réservée à l'élite.
J'me suis mal exprimé. Nous avons tous commencé un jour.
L'amateur est autant capable qu'un pro de comprendre (il faut juste se lancer ^^).
Mais je constate que beaucoup freine des deux pieds lorsqu'ils doivent évoluer vers de l'objet. Sans doute par peur ou méconnaissance. L'objet est une autre façon de penser un programme. ça demande plus de rigueur.
Mon but était simplement d'apporter une fonction simple. De plus pour un pro elle est facilement adaptable/modifiable en classe avec ou non l'utilisation de SPL.
J'pense que tu as raison et qu'il faut produire un bon code objet (c'est la mode dans le monde php) mais pour cela, il faut de petite source, simple, bien commenté pour justement faire évoluer les néophytes.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 mars 2009 à 22:21
Mince, je dois double-poster... :/
La doc sur les itérateurs n'est certes pas très fournie : http://fr.php.net/manual/fr/spl.iterators.php Elle n'explique pas réellement ce qu'est un itérateur, poruquoi, comment et se contente un peu de définir les classes.
La doc de la SPL (anciennement http://www.php.net/~helly ) n'est guère mieux à ce niveau là.
Cependant, concernant les définitions des classes, c'est franchement exhaustif.
Si on s'intéresse aux itérateurs, il y a quelques bons tutos, même sur PHPCS, écrits notamment par Malalam, Codefalse ou Akhénaton (de mémoire, j'en oublie, et j'en cite peut-être même à tort). Il y a aussi quelques sources à but didactique (j'en sais quelque chose) très simples qui illustrent le fonctionnement d'un itérateur. Et il y a même des sources très complexes qui exploitent à fond les itérateurs (je pense à la collection de membres par Malalam).
Si la doc officielle ne permet pas vraiment d'apprendre à utiliser les itérateurs, les livres, tutos, articles, billets de blogs etc sont par contre légion.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 mars 2009 à 22:14
C'est là l'éternel problème : la stagnation des connaissances, et le refus d'évoluer, de progresser...
C'est parce que beaucoup de gens continuent d'utiliser et de produire du code PHP3, simplement "parce que ça marche" et que "c'est largement suffisant pour ce qu'on en fait" qu'on trouve encore et encore des sources vieilles qui n'évoluent pas avec le langage. Est-ce que ces personnes ont pour autant un bon vieux téléphone à cadran pourtant tout à fait fonctionnel pour téléphoner ? Probablement pas...
Et dire (encore) que des beaucoup de développeurs font ça en amateur donc en procédural (tu ne l'as pas dit tel quel, mais on sent l'idée ; et puis tellement d'autres le disent) c'est considérer la programmation orientée objet comme réservée à une élite, et inaccessible au commun des mortels... C'est dommage, parce qu'on peut être amateur et développer en objet. Ca s'apprend. De là à passer d'un code procédural à un code objet du jour au lendemain sur des sites en production, peut-être pas, hein, soyons réalistes... Mais les objets ont été introduits en PHP4. Ca fait un moment, PHP4 n'est plus supporté depuis plus d'un an, et plus développé depuis plus de 6 mois. Ca laissait pourtant le temps d'apprendre, non ?
Mais c'est vrai, ce n'est pas entièrement la faute des néophytes : les sites qui publient des sources et de tutos hors d'âge sont bien plus responsables du fait de la négligeance dans les mises à niveau des articles et le maintien de sources obsolètes (y compris PHPCS).
Bref... On pourrait en discuter longuement, excuse-moi d'avoir utilisé les commentaires à ta source pour débattre de ça... (d'autant que je n'ai même pas regardé ton code, je me suis contenté de regarder si tu utilisais le diabolique duo opendir()/readdir() ... pardon encore).
dark_nemo
Messages postés16Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention23 septembre 2010 13 mars 2009 à 20:56
La réponse est simple. La doc sur les itérateur est pratiquement inexistante (sauf erreur de ma part)... Donc pour une simple fonction les gens passent des heures à tester en aveugle et à corriger bug sur bug.
Je ne pense pas qu'il soit judicieux d'avancer à l'aveugle sur des sites en productions. Le programmateur cherche un code fonctionnel et qui tourne partout.
Beaucoup de programmeur de petits sites code en amateur... Le plus souvent en procédural et non en objet.
Je trouve aussi que les itérateurs sont intéressant par leurs simplicités d'utilisations mais il faut avouer que le code ne serait plus modifiable par l'utilisateur lambda qui ne va pas savoir le modifier ou l'adapter comme il veut...or php est un langage ouvert à tous.
Une bonne vieille fonction à l'ancienne est parfois fort utile.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 mars 2009 à 18:01
Mais pourquoi est-ce que tout le monde continue d'utiliser opendir() et readdir() ?
Pourquoi personne n'utilise jamais d'itérateur ?
dark_nemo
Messages postés16Date d'inscriptionmardi 18 novembre 2003StatutMembreDernière intervention23 septembre 2010 13 mars 2009 à 12:44
Merci pour la note et le petit commentaire ^^.
Faudra que j'pense à faire une version php5 (voir même en vu de php6) histoire de réduire un peu le code et d'optimiser un peu plus. Autant vivre avec son temps.
cs_guismo1er
Messages postés76Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention12 mars 2009 12 mars 2009 à 22:24
Woow, je ne l'ai pas testée. Mais c'est génial. Jte met 9, car y a toujours moyen d'améliorer qqch^^
12 nov. 2009 à 19:34
if((filemtime($folder.'/'.$file) > (time()-$lifetime)) || is_null($lifetime))
Encore désolé
12 nov. 2009 à 19:28
Désolé de répondre aussi tard. Pour filter, selon la date il faut juste récupérer la date de modification du fichier avec la fonction filemtime (elle retourne un timestamp) et faire un test conditionnel avec.
Modifier la ligne 12 par :
function clear_folders($folder,$exts_array=array(),$files_array=array(),$lifetime=null,$recursive=true)
Modifier la ligne 27 par :
clear_folders($folder.'/'.$file, $exts_array,$files_array,$lifetime,$recursive);
Modifier les lignes 52 à 55 comme ceci :
if((filemtime($folder.'/'.$file) > (time()-$lifetime)) && !is_null($lifetime))
{
if(unlink($folder.'/'.$file)==false)
{
$return_value=false;
}
}
}
valneandre >> Si ma fonction est utile j'en suis content ^^ glob est pas mal, il faut penser à vérifier que la fonction est active (j'ai eu le cas d'un hébergeur qui l'avait désactivé de base)
13 oct. 2009 à 16:05
Par ailleurs, je compte récrire cette intéressante fonction en utilsant glob() plutôt que opendir() et readdir(). Je poste un comment dès que c'est au point.
Merci à tous ceux qui font l'effort d'enseigner.
16 mars 2009 à 08:58
Si en plus on pouvait nettoyer des fichiers en fonction de leur date se serait super
(exemple : supprimer tout ce qui est vieux de plus de 3 mois...)
13 mars 2009 à 22:47
Lire la source (non documentée, certes, mais...) et les commentaires (...commentée par la suite) permet, je pense, de comprendre le fonctionnement d'un itérateur.
Sinon, j'ai bien compris la raison pour laquelle tu as publié cette source, et je ne remets pas ça en question. Je ne suis pas allé plus loin que l'utilisation de opendir() et readdir().
Je constate quand même (et ça fait plaisir) que tu les utilises correctement (c'est à dire en faisant une comparaison stricte avec false).
Maintenant, libre à chacun de continuer à développer en PHP3 ou de passer 2 (voire 3) vitesses au dessus... ;)
13 mars 2009 à 22:35
De plus il est vrai que la programmation objet n'est pas réservée à l'élite.
J'me suis mal exprimé. Nous avons tous commencé un jour.
L'amateur est autant capable qu'un pro de comprendre (il faut juste se lancer ^^).
Mais je constate que beaucoup freine des deux pieds lorsqu'ils doivent évoluer vers de l'objet. Sans doute par peur ou méconnaissance. L'objet est une autre façon de penser un programme. ça demande plus de rigueur.
Mon but était simplement d'apporter une fonction simple. De plus pour un pro elle est facilement adaptable/modifiable en classe avec ou non l'utilisation de SPL.
J'pense que tu as raison et qu'il faut produire un bon code objet (c'est la mode dans le monde php) mais pour cela, il faut de petite source, simple, bien commenté pour justement faire évoluer les néophytes.
13 mars 2009 à 22:21
La doc sur les itérateurs n'est certes pas très fournie : http://fr.php.net/manual/fr/spl.iterators.php
Elle n'explique pas réellement ce qu'est un itérateur, poruquoi, comment et se contente un peu de définir les classes.
La doc de la SPL (anciennement http://www.php.net/~helly ) n'est guère mieux à ce niveau là.
Cependant, concernant les définitions des classes, c'est franchement exhaustif.
Si on s'intéresse aux itérateurs, il y a quelques bons tutos, même sur PHPCS, écrits notamment par Malalam, Codefalse ou Akhénaton (de mémoire, j'en oublie, et j'en cite peut-être même à tort). Il y a aussi quelques sources à but didactique (j'en sais quelque chose) très simples qui illustrent le fonctionnement d'un itérateur. Et il y a même des sources très complexes qui exploitent à fond les itérateurs (je pense à la collection de membres par Malalam).
Si la doc officielle ne permet pas vraiment d'apprendre à utiliser les itérateurs, les livres, tutos, articles, billets de blogs etc sont par contre légion.
13 mars 2009 à 22:14
C'est parce que beaucoup de gens continuent d'utiliser et de produire du code PHP3, simplement "parce que ça marche" et que "c'est largement suffisant pour ce qu'on en fait" qu'on trouve encore et encore des sources vieilles qui n'évoluent pas avec le langage. Est-ce que ces personnes ont pour autant un bon vieux téléphone à cadran pourtant tout à fait fonctionnel pour téléphoner ? Probablement pas...
Et dire (encore) que des beaucoup de développeurs font ça en amateur donc en procédural (tu ne l'as pas dit tel quel, mais on sent l'idée ; et puis tellement d'autres le disent) c'est considérer la programmation orientée objet comme réservée à une élite, et inaccessible au commun des mortels... C'est dommage, parce qu'on peut être amateur et développer en objet. Ca s'apprend. De là à passer d'un code procédural à un code objet du jour au lendemain sur des sites en production, peut-être pas, hein, soyons réalistes... Mais les objets ont été introduits en PHP4. Ca fait un moment, PHP4 n'est plus supporté depuis plus d'un an, et plus développé depuis plus de 6 mois. Ca laissait pourtant le temps d'apprendre, non ?
Mais c'est vrai, ce n'est pas entièrement la faute des néophytes : les sites qui publient des sources et de tutos hors d'âge sont bien plus responsables du fait de la négligeance dans les mises à niveau des articles et le maintien de sources obsolètes (y compris PHPCS).
Bref... On pourrait en discuter longuement, excuse-moi d'avoir utilisé les commentaires à ta source pour débattre de ça... (d'autant que je n'ai même pas regardé ton code, je me suis contenté de regarder si tu utilisais le diabolique duo opendir()/readdir() ... pardon encore).
13 mars 2009 à 20:56
Je ne pense pas qu'il soit judicieux d'avancer à l'aveugle sur des sites en productions. Le programmateur cherche un code fonctionnel et qui tourne partout.
Beaucoup de programmeur de petits sites code en amateur... Le plus souvent en procédural et non en objet.
Je trouve aussi que les itérateurs sont intéressant par leurs simplicités d'utilisations mais il faut avouer que le code ne serait plus modifiable par l'utilisateur lambda qui ne va pas savoir le modifier ou l'adapter comme il veut...or php est un langage ouvert à tous.
Une bonne vieille fonction à l'ancienne est parfois fort utile.
13 mars 2009 à 18:01
Pourquoi personne n'utilise jamais d'itérateur ?
13 mars 2009 à 12:44
Faudra que j'pense à faire une version php5 (voir même en vu de php6) histoire de réduire un peu le code et d'optimiser un peu plus. Autant vivre avec son temps.
12 mars 2009 à 22:24