Listage répertoires/sous répertoires + fichiers

Description

On met le script dans un repertoire, on l'execute et il nous retourne les reptertoires avec leur contenu ainsi que les sous-répertoires et leur contenu ...

Source / Exemple :


<?
/************************************************************************/
/* listage.php: liste tous les répertoires/sous-répertoires et fichiers */
/* ==================================================================== */
/*                                                                      */
/* titiplusplus titiplusplus@titiplusplus.com							*/
/* http://ebc.titiplusplus.com titi_plusplus@hotmail.com				*/
/*                                                                      */
/* Mettez le script dans le répertoire à lister et executez le.			*/
/* Pour un répertoire exclus du serveur web (doc root) executez-le		*/
/* avec php.exe en ligne de commande :									*/
/* ex : php.exe listage.php > listage.html puis ouvrez listage.html		*/
/************************************************************************/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Listage des répertoires </TITLE>

</HEAD>
<BODY>
<?php

//classe "récursive" repertoire

$idclass=0;

class repertoire
{
	//propriétés
	var $id;//identifiant unique de la classe
	var $chemin;//chemin du répertoire en cours
	var $nom;//nom du répertoire en cours
	var $listRep;//tableau des classes filles (ou sous classes)
	var $listFiles;//tableau des noms + dates de modification des fichiers du répertoire en cours

	//constructeur
	function repertoire($inChemin,$inNom)
	{
		global $idclass;

		$this->id=$idclass;
		
		$this->chemin=$inChemin;
		$this->nom=$inNom;

		$idclass++;//incrémentation pour la prochaine classe

		if($inChemin!="")//déduction du chemin complet du repertoire
		{
			$fullpath=$inChemin."/".$inNom;
		}
		else
		{
			$fullpath=$inNom;
		}

		$handle=opendir($fullpath);

		$tmp=0;//var d'increment -> tableau de sous classes
		$tmp2=0;//var d'increment -> tableau de fichiers

		while ($file = readdir($handle))//création des sous classe
		{
			if (is_dir($fullpath."/".$file) && $file != "." && $file != "..")
			{
				//instanciation d'une nouvelle classe depuis cette classe
				//j'appelle ça des classes récursives :-)
				//tant qu'il y aura des sous répertoires des sous classes seront créees ...
				//ex : pour rep1/rep2/rep3 => classe1->sousclasse2->sousclasse3 etc ...
				//les unes imbriquées dans les autres :-P et accessibles avec le tableau listRep
				$this->listRep[$tmp]=new repertoire($fullpath,$file);
				$tmp++;
			}
			else if(is_file($fullpath."/".$file) && $file != "." && $file != "..")
			{
				clearstatcache();//effacement du cache (conseillé dans la doc ... donc on le fait :-)
				//liste des fichiers + date modif
				$this->listFiles[$tmp2]="<td>".$file."</td><td>".date("d/m/y H:i",fileatime($fullpath."/".$file))."</td>";
				$tmp2++;
			}
		}

		closedir($handle);
	}

	//fonction d'affichage en html
	function toString()//un peu comme le toString() en java
	{
		echo"<table border=1 border=0 cellspacing=0 cellpadding=0>
		<tr><td colspan=2 align=center><b><FONT SIZE=2 COLOR=red>".$this->nom."</FONT></b></td></tr>\n";
		for($i=0;$i<count($this->listFiles);$i++)
		{
			echo"<tr><FONT SIZE=2 >".$this->listFiles[$i]."</FONT></tr>\n";
		}
		for($i=0;$i<count($this->listRep);$i++)
		{
			//on appelle les toString() des classes filles
			echo"<tr><td colspan=2></td></tr><tr>
				<td align=center valign=top><b><!-- <FONT SIZE=2 COLOR=red>".$this->nom."</FONT> --></b></td>
				<td>";
			$this->listRep[$i]->toString();
			echo"</td>";
			echo"</tr>\n";
		}
		echo"</table>\n";
	}
}

//DEBUT

$j=0;
$path='.';

$handle=opendir($path);
//listage des repertoires du répertoire où se trouve le script
while ($file = readdir($handle))
{
    if (is_dir($file) && $file != "." && $file != "..")
	{
		$repertoire=new repertoire($path,$file);
		$repertoire->toString();
    }
}

closedir($handle);

//FIN

//voilou ... simple et efficace à souhait :-P
?>
</BODY>
</HTML>

Conclusion :


On pourrait afficher plus d'infos mais bon ... le but de ce script n'est pas là ... il s'agissait de travailler un peut les objets :-P

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.