Re: extended_glob

Olivier Pascal <[email protected]> Mon, 29 Mar 2004 18:06:17 +0400
Newsgroups gmane.comp.web.blogv2.devel
Message-ID <[email protected]>
Le Dimanche 28 Mars 2004 17:23, Eric Daspet a écrit :
> j'ai regardé un peu le head, j'ai fait deux modifs vite fait pour virer
> les ereg

Ben il me servait bien moi mon timer, ça me permettait à vu d'oeil de voir en 
gros ce qui se passait, si le cache été chargé, si les classes étaient bien 
incluses, si l'initialisation se caisait assez rapidement, etc. ;-)

> par contre quel est le but de extended_glob ? j'ai du mal à
> voir ce qu'il apporte de plus que le glob classique.

La fonction extend_glob($pattern) permet de localiser des fichiers selon le 
masque shell passé en paramètre. La différence par rapport à glob() est assez 
subtile : dans extend_glob(), le masque du fichier de base est cherché dans 
tous les sous-répertoires.

Exemple pour extend_glob :
/modules/*/lib/*.php
ici la fonction cherchera les fichiers satisfaisant le masque '*.php' dans les 
répertoires satisfaisant le masque '/modules/*/lib' _et_ dans les sous 
répertoires.

Ça reviendrait à utiliser ça avec glob() :
/modules/*/lib/*.php
/modules/*/lib/*/*.php
/modules/*/lib/*/*/*.php
/modules/*/lib/*/*/*/*.php
...

C'est utile pour le chargement des librairies. Ensuite, extend_glob agit comme 
suit :

Si une extension a été spécifié dans le masque, alors le tableaux retourné 
sera composé de paire clés-valeurs, par exemple
[IniHandler] => /lib/IniHandler.class.php
[DataFile] => /lib/stockage/DataFile.class.php

De cette manière __autoload n'aura juste qu'à lire la bonne clé dans le 
tableau pour inclure le bon fichier.

-- 
Olivier Pascal