OK, je crée une interface administrative pour mon blog personnalisé à l'URL / admin. P>
est-il possible que je puisse utiliser le même inclut (y compris AutoLoad), en tant que répertoire racine. P>
Si possible, j'aimerais également pouvoir corriger automatiquement les liens de la navigation afin qu'ils vont d'index.php dans / changements à ../index.php lors de votre accès à / admin. P>
Merci, Nico P>
4 Réponses :
La meilleure pratique pour cela est de définir une constante «absolue_path» qui contient le répertoire que tout est situé sous. Après cela, vous pouvez simplement copier et coller tout, car il définit le chemin «complet», qui ne passe pas du répertoire en répertoire au répertoire.
Exemple P>
include(ABS_PATH . "/path/to/file");
Ah, mais comment puis-je découvrir ce que ce chemin devrait être?
Vous voulez probablement jeter un coup d'œil à PHP Info pour une variable de serveur ou de le définir vous-même. Si vous le définissez vous-même, assurez-vous qu'il est le répertoire que tous les fichiers tombent sous.
La manière la plus simple serait d'utiliser des chemins / URL absolus.
Pour les URL, définissez une constante / variable quelque part, qui pointe vers la racine de votre application, comme: p> ou p> et utilisez-le dans chaque lien, comme: p> de cette façon, toujours ok ( et le jour où vous installez votre projet sur un autre serveur ou dans un sous-répertoire, vous n'avez qu'une constante / variable à modifier, et tout fonctionne toujours) p> pour inclut / nécessite toujours des chemins absolus aussi; Une solution consiste à utiliser dirname code>
, comme ceci: p> include dirname(__FILE__) . '/my_file.php';
include dirname(__FILE__) . '/../my-other-file.php';
Les traces ABS vous ralent-ils? Dis si vous ne gardez pas simplement vos liens hétéro, mais dans le flux de programme.
Une autre réponse serait similaire à la combinaison des deux premières suggestions. Vous pouvez définir la constante: puis, en supposant que espère que cela aide. p> p> config.php code> doit être inclus dans de nombreux fichiers du site, vous pouvez utiliser la déclaration suivante pour accomplir Ceci: p>
Une autre option que j'ai utilisée pour les fonctions.php dans le passé est un autochargeur de classe.
//Class Autoloader spl_autoload_register(function ($className) { $className = strtolower($className); $path = "includes/{$className}.php"; if (file_exists($path)) { require_once($path); } else { die("The file {$className}.php could not be found."); } });