MVC Hello World
This commit is contained in:
		
							parent
							
								
									c3bc6cc2d0
								
							
						
					
					
						commit
						9dd72d1361
					
				
							
								
								
									
										13
									
								
								Controleurs/ControleurHelloworld.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Controleurs/ControleurHelloworld.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
| 
 | ||||
| final class ControleurHelloworld | ||||
| { | ||||
|     public function defautAction() | ||||
|     { | ||||
|         $S_helloworld =  new Helloworld(); | ||||
| 
 | ||||
|         Vue::montrer('helloworld/voir', array('helloworld' =>  $S_helloworld->donneMessage())); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										12
									
								
								Modele/Helloworld.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Modele/Helloworld.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| <?php | ||||
| 
 | ||||
| final class Helloworld | ||||
| { | ||||
|     private $_S_message = "Hello World"; | ||||
| 
 | ||||
|     public function donneMessage() | ||||
|     { | ||||
|         return $this->_S_message ; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										47
									
								
								Noyau/ChargementAuto.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Noyau/ChargementAuto.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| <?php | ||||
| 
 | ||||
| require 'Noyau/Constantes.php'; | ||||
| 
 | ||||
| final class ChargementAuto | ||||
| { | ||||
|     public static function chargerClassesNoyau ($S_nomDeClasse) | ||||
|     { | ||||
|         $S_fichier = Constantes::repertoireNoyau() . "$S_nomDeClasse.php"; | ||||
|         return static::_charger($S_fichier); | ||||
|     } | ||||
| 
 | ||||
|     public static function chargerClassesModele ($S_nomDeClasse) | ||||
|     { | ||||
|         $S_fichier = Constantes::repertoireModele() . "$S_nomDeClasse.php"; | ||||
| 
 | ||||
|         return static::_charger($S_fichier); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public static function chargerClassesVue ($S_nomDeClasse) | ||||
|     { | ||||
|         $S_fichier = Constantes::repertoireVues() . "$S_nomDeClasse.php"; | ||||
| 
 | ||||
|         return static::_charger($S_fichier); | ||||
|     } | ||||
| 
 | ||||
|     public static function chargerClassesControleur ($S_nomDeClasse) | ||||
|     { | ||||
|         $S_fichier = Constantes::repertoireControleurs() . "$S_nomDeClasse.php"; | ||||
| 
 | ||||
|         return static::_charger($S_fichier); | ||||
|     } | ||||
|     private static function _charger ($S_fichierACharger) | ||||
|     { | ||||
|         if (is_readable($S_fichierACharger)) | ||||
|         { | ||||
|             require $S_fichierACharger; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // J'empile tout ce beau monde comme j'ai toujours appris à le faire...
 | ||||
| spl_autoload_register('ChargementAuto::chargerClassesNoyau'); | ||||
| spl_autoload_register('ChargementAuto::chargerClassesModele'); | ||||
| spl_autoload_register('ChargementAuto::chargerClassesVue'); | ||||
| spl_autoload_register('ChargementAuto::chargerClassesControleur'); | ||||
							
								
								
									
										40
									
								
								Noyau/Constantes.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								Noyau/Constantes.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| <?php | ||||
| 
 | ||||
| // Rappel : nous sommes dans le répertoire Core, voilà pourquoi dans realpath je "remonte d'un cran" pour faire référence
 | ||||
| // à la VRAIE racine de mon application
 | ||||
| 
 | ||||
| final class Constantes | ||||
| { | ||||
|     // Les constantes relatives aux chemins
 | ||||
| 
 | ||||
|     const REPERTOIRE_VUES        = '/Vues/'; | ||||
| 
 | ||||
|     const REPERTOIRE_MODELE      = '/Modele/'; | ||||
| 
 | ||||
|     const REPERTOIRE_NOYAU       = '/Noyau/'; | ||||
| 
 | ||||
|     const REPERTOIRE_CONTROLEURS = '/Controleurs/'; | ||||
| 
 | ||||
| 
 | ||||
|     public static function repertoireRacine() { | ||||
|         return realpath(__DIR__ . '/../'); | ||||
|     } | ||||
| 
 | ||||
|     public static function repertoireNoyau() { | ||||
|         return self::repertoireRacine() . self::REPERTOIRE_NOYAU; | ||||
|     } | ||||
| 
 | ||||
|     public static function repertoireVues() { | ||||
|         return self::repertoireRacine() . self::REPERTOIRE_VUES; | ||||
|     } | ||||
| 
 | ||||
|     public static function repertoireModele() { | ||||
|         return self::repertoireRacine() . self::REPERTOIRE_MODELE; | ||||
|     } | ||||
| 
 | ||||
|     public static function repertoireControleurs() { | ||||
|         return self::repertoireRacine() . self::REPERTOIRE_CONTROLEURS; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										35
									
								
								Noyau/Controleur.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								Noyau/Controleur.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| <?php | ||||
| 
 | ||||
| final class Controleur | ||||
| { | ||||
|     private $_A_urlDecortique; | ||||
| 
 | ||||
|     public function __construct ($S_controleur, $S_action) | ||||
|     { | ||||
| 
 | ||||
|         if (empty($S_controleur)) { | ||||
|             // Nous avons pris le parti de préfixer tous les controleurs par "Controleur"
 | ||||
|             $this->_A_urlDecortique['controleur'] = 'ControleurDefaut'; | ||||
|         } else { | ||||
|             $this->_A_urlDecortique['controleur'] = 'Controleur' . ucfirst($S_controleur); | ||||
|         } | ||||
| 
 | ||||
|         if (empty($S_action)) { | ||||
|             // L'action est vide ! On la valorise par défaut
 | ||||
|             $this->_A_urlDecortique['action'] = 'defautAction'; | ||||
|         } else { | ||||
|             // On part du principe que toutes nos actions sont suffixées par 'Action'...à nous de le rajouter
 | ||||
|             $this->_A_urlDecortique['action']  = $S_action . 'Action'; | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|      | ||||
|     // On exécute
 | ||||
|     public function executer() | ||||
|     { | ||||
|         //fonction de rappel de notre controleur cible (ControleurHelloworld pour notre premier exemple)
 | ||||
|         call_user_func_array(array(new $this->_A_urlDecortique['controleur'], | ||||
|             $this->_A_urlDecortique['action']), array()); | ||||
| 
 | ||||
|     } | ||||
| } | ||||
							
								
								
									
										27
									
								
								Noyau/Vue.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Noyau/Vue.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| <?php | ||||
| 
 | ||||
| final class Vue | ||||
| { | ||||
|     public static function ouvrirTampon() | ||||
|     { | ||||
|         // On démarre le tampon de sortie, on va l'appeler "tampon principal"
 | ||||
|         ob_start(); | ||||
|     } | ||||
| 
 | ||||
|     public static function recupererContenuTampon() | ||||
|     { | ||||
|         // On retourne le contenu du tampon principal
 | ||||
|         return ob_get_clean(); | ||||
|     } | ||||
| 
 | ||||
|     public static function montrer ($S_localisation, $A_parametres = array()) | ||||
|     { | ||||
|         $S_fichier = Constantes::repertoireVues() . $S_localisation . '.php'; | ||||
| 
 | ||||
|             $A_vue = $A_parametres; | ||||
|             // Démarrage d'un sous-tampon
 | ||||
|             ob_start(); | ||||
|             include $S_fichier; // c'est dans ce fichier que sera utilisé A_vue, la vue est inclue dans le sous-tampon
 | ||||
|             ob_end_flush(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										12
									
								
								Vues/gabarit.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Vues/gabarit.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| <!doctype html> | ||||
| <html lang="fr"> | ||||
|     <head> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
|         <title>My sweet MVC</title> | ||||
|     </head> | ||||
|     <body> | ||||
|         <?php Vue::montrer('standard/entete'); ?>
 | ||||
|         <?php echo $A_vue['body'] ?>
 | ||||
|         <?php Vue::montrer('standard/pied'); ?>
 | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										3
									
								
								Vues/helloworld/voir.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Vues/helloworld/voir.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| <?php | ||||
| 
 | ||||
| echo "<p>" . $A_vue['helloworld']  . "</p>"; | ||||
							
								
								
									
										2
									
								
								Vues/standard/entete.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Vues/standard/entete.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| <?php | ||||
|  echo '<header> <h1>Titre</h1></header>'; | ||||
							
								
								
									
										1
									
								
								Vues/standard/pied.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Vues/standard/pied.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| <footer>Pied</footer> | ||||
							
								
								
									
										21
									
								
								index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								index.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| <?php | ||||
| // Ce fichier est le point d'entrée de votre application
 | ||||
| 
 | ||||
|     require 'Noyau/ChargementAuto.php'; | ||||
|     /* | ||||
|      url pour notre premier test MVC Hello World, | ||||
|      nous n'avons pas d'action précisée on visera celle par défaut | ||||
|      index.php?ctrl=helloworld | ||||
|     */ | ||||
|     $S_controleur = isset($_GET['ctrl']) ? $_GET['ctrl'] : null; | ||||
|     $S_action = isset($_GET['action']) ? $_GET['action'] : null; | ||||
| 
 | ||||
|     Vue::ouvrirTampon(); //  /Noyau/Vue.php : on ouvre le tampon d'affichage, les contrôleurs qui appellent des vues les mettront dedans
 | ||||
|     $O_controleur = new Controleur($S_controleur, $S_action); | ||||
|     $O_controleur->executer(); | ||||
| 
 | ||||
|     // Les différentes sous-vues ont été "crachées" dans le tampon d'affichage, on les récupère
 | ||||
|     $contenuPourAffichage = Vue::recupererContenuTampon(); | ||||
| 
 | ||||
|     // On affiche le contenu dans la partie body du gabarit général
 | ||||
|     Vue::montrer('gabarit', array('body' => $contenuPourAffichage)); | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user