Astuces les plus consultés

mercredi 30 novembre 2011

Inclure un fichier en PHP

Bonjour à tous. J'ai souvent été confronté à ce problème d'include de fichiers, soit je sais très bien ou il est, je l'appele avec un include, et je me rends compte que le chemin est mal ecrit, ou alors, pendant le developpement de mon application, je le déplace pour des raisons d'organisations, et cette dernière commence à bugger suite aux changement d'emplacement.
J'ai palié à une solution radicale, qu'on devrait considérer comme temporaire car je ne la conseille pas pour des sites internet, mais des applications en ligne.

Tout d'abord, je dispose d'une classe encore en construction, qui me permet de gérer les fichiers en générale.

fichier.class.php :

 
 * @package 	MyFramework
 * @since 		Version 1.0
 * @version		1.0
 * @copyright 	Copyright (c) 2011, Bertrand, Patient et Fabrice
 * @license		GNU General Public License
 */

class fichier extends CamerticConfig {

	public function __construct() {
		
	}
	
	/*
	
	*/
	public function getFolders($dossier) {
		$sousdossiers = array();
		if($dh = opendir($dossier)) {
			while(($filename = readdir($dh))) {
				if(is_dir($filename)) {
					$sousdossiers[] = $dossier."/".$filename; 
				}
			}
		}
		
		return $sousdossiers;
	}
	
	public function getFoldersRecursion($folder) {
		$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder));
		$touslesfichiers = array();
		echo "
";
		//var_dump($it);die;
		foreach( $it as $key => $file ) {
			//echo $file;
			$touslesfichiers[] = $file;
		}
		echo "
"; return $touslesfichiers; } public function localizeFile($file) { $dossierappli = $_SERVER['DOCUMENT_ROOT'] . $this->appfolder; $files = $this->getFoldersRecursion($dossierappli); foreach($files as $f) { if(preg_match("/$file/", $f)) return $f; else continue; } } public function cheminReel($fichier) { return realpath($fichier); } public function __destructor() { } }
Ensuite nou allons ecrire une fonction simple qui va nous permettre d'inclure notre fichier sans se soucier de son emplacement :

function inclu($file) {
	$fichier = new fichier();
	include_once($fichier->localizeFile($file));
}
Nous en avons terminé. Donnez moi vos appréciations.

Aucun commentaire:

Enregistrer un commentaire