insérer autoload dans architecture mvc
Bonjour,
j'ai découvert ici un tuto sur le mvc : https://bpesquet.developpez.com/tuto...hitecture-mvc/. Le code est plus accessible (pour moi) que le code de rawsrc : https://www.developpez.net/forums/blogs/32058-rawsrc/. Par contre, il lui manque le mécanisme d'autoload ce qui nécessite des includes pour toutes les classes. J'essaye de le modifier pour le rajouter, mais erreur...
L'autoload est bien expliqué dans le blog de rawsrc : https://www.developpez.net/forums/bl.../#comment11831 (Ca, j'arrive à comprendre !)
Mais ça suffit pas.
dans index.php de Pesquet (j'ai rajouté les lignes 2 à 6 et commenté la ligne 1) :
Code:
1 2 3 4 5 6 7 8
| //require 'Framework/Routeur.php';
//autoloading
include_once 'Autoloader.php';
use Framework\Routeur;
Autoloader::register();
$routeur = new Routeur(); |
autoloader.php (fichier placé à la racine) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?php
class Autoloader {
static function register() {
define('DIR_ROOT', __DIR__.DIRECTORY_SEPARATOR);
$autoloader = function($full_class_name) {
// on prépare le terrain : on remplace le séparteur d'espace de nom par le séparateur de répertoires du système
$name = str_replace('\\', DIRECTORY_SEPARATOR, $full_class_name);
// on construit le chemin complet du fichier à inclure :a
// il faut que l'autoloader soit toujours à la racine du site
$path = DIR_ROOT.$name.'.php';
// on vérifie que le fichier existe et on l'inclut
// sinon on passe la main à une autre autoloader (return false)
if (is_file($path)) {
include $path;
return true;
} else {
return false;
}
};
spl_autoload_register($autoloader);
}
} |
et la classe Framework/routeur.php (j'ai rajouté la ligne 2) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php
namespace Framework;
require_once 'Controleur.php';
//require_once 'Requete.php';
require_once 'Vue.php';
/**
* Classe de routage des requêtes entrantes.
* Inspirée du framework PHP de Nathan Davison
* (https://github.com/ndavison/Nathan-MVC)
*
* @author Baptiste Pesquet
*/
class Routeur
...
{ |
L'arborescence est donnée dans le chapitre VI-A de https://bpesquet.developpez.com/tuto...chitecture-mvc
et message d'erreur :
Citation:
Fatal error: Cannot declare class Requete, because the name is already in use in C:\wamp64\www\mvc_dvp_auth2\Framework\Requete.php on line 10
La ligne 10 de requete.php est class Requete..
Comment corriger cette erreur ?