Je suis en train de créer un autoloader qui étend le include_path. Il prend un tableau, ajoute le chemin explode() d include, supprime toutes les références au répertoire courant, ajoute un seul répertoire courant au début du tableau, et enfin rejoue() le tout pour former un nouveau chemin d'inclusion . Le code est ci-dessousarray_unique() sans tri
<?php
static public function extendIncludePath (array $paths)
{
// Build a list of the current and new paths
$pathList = array_merge (explode (PATH_SEPARATOR, $paths), explode (PATH_SEPARATOR, get_include_path()));
// Remove any references to the current directory from the path list
while ($key = array_search ('.', $pathList))
{
unset ($pathList [$key]);
}
// Put a current directory reference to the front of the path
array_unshift ($pathList, '.');
// Generate the new path list
$newPath = implode (PATH_SEPARATOR, $pathList);
if ($oldPath = set_include_path ($newPath))
{
self::$oldPaths [] = $oldPath;
}
return ($oldPath);
}
?>
Je voulais aussi utiliser array_unique() sur le tableau avant d'imploser pour que PHP ne tient pas à la recherche au même endroit plusieurs fois si quelqu'un est négligent et précise le même chemin plus qu'une seule fois. Cependant, j'ai également besoin de maintenir l'ordre de tri du tableau car include regarde dans les répertoires dans l'ordre où ils sont définis dans le chemin include. Je veux d'abord regarder dans le répertoire courant, puis ma liste de répertoires de recherche et enfin le chemin d'inclusion original afin que, par exemple, une ancienne version d'une bibliothèque commune dans include_path par défaut ne soit pas incluse en faveur d'une version plus récente dans ma liste de recherche.
Pour ces raisons, je ne peux pas utiliser array_unique() car il trie le contenu du tableau.
Existe-t-il un moyen d'obtenir array_unique pour préserver l'ordre des éléments dans mon tableau?
Trier de passer par votre demande: Est-ce '$ array = array_flip (array_flip ($ array))' une option pour vous? ('array_flip' échange les valeurs avec les clés, et puisque les clés sont toujours uniques, un double' array_flip' rend les valeurs de votre tableau uniques.) – pinkgothic