11-18-2008, 10:22 AM
Bonjour,
Mon ami MeliMelo et moi même sommes en train de créé un "Moteur de Jeux". Nous sommes actuellement à la définition des diagrammes UML et la défintiion précise de tout ce que devra proposer le moteur (il inclut pour le moment, sur papier, toutes les possibilités des jeux que l'on retrouve sur le web).
De mon côté, afin de mieux apréhender le modèle MVC, j'ai du recoder un site (professionnel) que j'avai crée. Il y a actuellement un site totalement fonctionnel afin de pouvoir travailler mais qui celui ci ne respecte pas du tout le modèle MVC.
Je voudrai juste savoir si je suis sur la bonne route:
Il y a une page index.php qui fait appel à un fichier de config contenant des variables de type $inc['menu']= ... contenant plein de paramètres pour l'accès à mes pages. L'autoloader charge l'ensemble des classes indiquées dans les dossiers de $inc['Classes']= array...
Lors d'un clic sur le menu, la page index se charge de lire le tableau 'menu' et ouvre une page. Exemple:
Listing de logs. => Modules/Logs/index.php
Cette page crée un objet listingLog (classe située à la racine du site dans un dossier libs/class) qui lui même fait appel à une classe singleton bdd. L'objet stock les infos et on fait appel à un template situé dans: Modules/Logs/templates/log.list.template.php.
Celui ci contient des instructions du type: foreach (...as $element)
$element->getTitre()...
Concernant les formulaires, j'ai créé les classes suivantes:
form (1 -> *) elementForm (* -> 1) Validateur
Donc, en gros, une form contient un array d'élémentsForm et chaque element de la form possède un validateur.
J'ai bien:
1 intéraction indépendante avec la base de donnée (qui s'occupe de passer la requete)
1 récupération et traitement des infos via une page controller (index.php ou autre dans mon module)
1 template ou plusieurs appelés pour réaliser un affichage.
Voici mon arborescence:
Modules\Logs:
(d) Templates
(f) form.recherche.logs.php
(f) Liste.Logs.template.php
(f) index.php
(f) recherche.php
Voici les différents contenus (rien n'est commenté dans le code, un document existe à part en word):
Contenu de "index.php":
Contenu de "recherche.php":
Contenu de "Liste.Logs.template.php":
Contenu de "form.recherche.logs.php"
Ma page "index.php" principale:
Je n'ai pas collé ici les classes de form, de elementForm et validator. Non plus celles de RechercheForm étendant la classe form.
Merci pour vos remarques constructive ! je les attend avec impatience.
N'hésitez pas, si vous avez la moindre question !
lemouiX
Mon ami MeliMelo et moi même sommes en train de créé un "Moteur de Jeux". Nous sommes actuellement à la définition des diagrammes UML et la défintiion précise de tout ce que devra proposer le moteur (il inclut pour le moment, sur papier, toutes les possibilités des jeux que l'on retrouve sur le web).
De mon côté, afin de mieux apréhender le modèle MVC, j'ai du recoder un site (professionnel) que j'avai crée. Il y a actuellement un site totalement fonctionnel afin de pouvoir travailler mais qui celui ci ne respecte pas du tout le modèle MVC.
Je voudrai juste savoir si je suis sur la bonne route:
Il y a une page index.php qui fait appel à un fichier de config contenant des variables de type $inc['menu']= ... contenant plein de paramètres pour l'accès à mes pages. L'autoloader charge l'ensemble des classes indiquées dans les dossiers de $inc['Classes']= array...
Lors d'un clic sur le menu, la page index se charge de lire le tableau 'menu' et ouvre une page. Exemple:
Listing de logs. => Modules/Logs/index.php
Cette page crée un objet listingLog (classe située à la racine du site dans un dossier libs/class) qui lui même fait appel à une classe singleton bdd. L'objet stock les infos et on fait appel à un template situé dans: Modules/Logs/templates/log.list.template.php.
Celui ci contient des instructions du type: foreach (...as $element)
$element->getTitre()...
Concernant les formulaires, j'ai créé les classes suivantes:
form (1 -> *) elementForm (* -> 1) Validateur
Donc, en gros, une form contient un array d'élémentsForm et chaque element de la form possède un validateur.
J'ai bien:
1 intéraction indépendante avec la base de donnée (qui s'occupe de passer la requete)
1 récupération et traitement des infos via une page controller (index.php ou autre dans mon module)
1 template ou plusieurs appelés pour réaliser un affichage.
Voici mon arborescence:
Modules\Logs:
(d) Templates
(f) form.recherche.logs.php
(f) Liste.Logs.template.php
(f) index.php
(f) recherche.php
Voici les différents contenus (rien n'est commenté dans le code, un document existe à part en word):
Contenu de "index.php":
Code PHP :
<?php
if (!isset($_GET['idtitre']))
{
$Id_Titre = 'global';
} else {
$Id_Titre = $_GET['idtitre'];
}
$log = new log();
$ListeLogs = $log->load_logs($Id_Titre, @$_GET['Id_Log'], @$_GET['orderby'], @$_GET['ordre'],utilisateur::getInstance()->getId());
require_once $dResponse['templates'].'Liste.Logs.template.php';
?>Contenu de "recherche.php":
Code PHP :
<?php
form::getInstance();
$formRecherche = new logRechercheForm();
$resultats = 0;
if (isset($_POST[$formRecherche->getName()]))
{
$formRecherche->setFormValues();
$formRecherche->validateElements();
if ($formRecherche->getValidationForm() == TRUE)
{
$log = new log();
$ListeLogs = $log->recherche_logs($formRecherche->getChamp()->getFormValue(),$formRecherche->getChaine()->getFormValue());
$resultats = count($ListeLogs);
}
}
include $dResponse['templates'].'form.recherche.logs.php';
if ($formRecherche->getValidationForm() == TRUE)
{
require_once $dResponse['templates'].'Liste.Logs.template.php';
}
?>Contenu de "Liste.Logs.template.php":
Code PHP :
<table class="AffichageLogs">
<tr class="EnteteAffichageLogs">
<td>Id <br/>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Id&ordre=ASC"><img src="Images/Icones/ASC.png" class="ImgOrder"></a>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Id&ordre=DESC"><img src="Images/Icones/DESC.png" class="ImgOrder"></a>
</td>
<td>Projet</td>
<td>Env</td>
<td>Date deb.<br/>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Log_Date_Debut&ordre=ASC"><img src="Images/Icones/ASC.png" class="ImgOrder"></a>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Log_Date_Debut&ordre=DESC"><img src="Images/Icones/DESC.png" class="ImgOrder"></a>
</td>
<td>Heure deb.</td>
<td>Date Fin<br>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Log_Date_Fin&ordre=ASC"><img src="Images/Icones/ASC.png" class="ImgOrder"></a>
<a href="?pg=logs&idtitres=<?php echo $Id_Titre ?>&orderby=Log_Date_Fin&ordre=DESC"><img src="Images/Icones/DESC.png" class="ImgOrder"></a>
</td>
<td>Heure Fin</td>
<td>Duree</td>
<td>Code Ret.</td>
<td>Commentaire</td>
</tr>
<?php
foreach ($ListeLogs as $valeur)
{
?>
<tr class="logs">
<td><?php echo $valeur['Id_Log'] ?></td>
<td><?php echo $valeur['Projet_Titre'] ?></td>
<td><?php echo $valeur['Titre_Environnement'] ?></td>
<td><?php echo $valeur['Log_Date_Debut'] ?></td>
<td><?php echo $valeur['Log_Heure_Debut'] ?></td>
<td><?php echo $valeur['Log_Date_Fin'] ?></td>
<td><?php echo $valeur['Log_Heure_Fin'] ?></td>
<td><?php echo difheure($valeur['Log_Heure_Debut'],$valeur['Log_Heure_Fin'] ) ?></td>
<td><?php
if (($valeur['Log_Code_Retour'] == "1") || ($valeur['Log_Code_Retour'] == "0"))
{
$image = $valeur['Log_Code_Retour'].'.PNG';
} else {
$image = '2.PNG';
}
?><img src="Images/Icones/<?php echo $image ?>" alt="<?php echo $valeur['Log_Code_Retour'] ?>"></td>
<td><div class="DescriptionLog"><?php echo $valeur['Log_Commentaire'] ?></div></td>
</tr>
<?php
}
?>
</table>
Contenu de "form.recherche.logs.php"
Code PHP :
<form action="<?php echo $formRecherche->getAction() ?>" method="<?php echo $formRecherche->getMethode() ?>" name = "<?php echo $formRecherche->getName() ?>">
<?php if ($formRecherche->getChaine()->getValidator()->getErrors() != "")
{ ?>
<div class="error">
<?php echo $formRecherche->getChaine()->getValidator()->getErrors() ?>
</div>
<?php } ?>
<?php echo $formRecherche->getChaine()->getLabel() ?> <INPUT type="<?php echo $formRecherche->getChaine()->getType() ?>" name="<?php echo $formRecherche->getChaine()->getName() ?>" value="<?php echo $formRecherche->getChaine()->getValues() ?>">
<br />
<?php echo $formRecherche->getChamp()->getLabel() ?> <SELECT name="<?php echo $formRecherche->getChamp()->getName() ?>">
<?php
foreach ($formRecherche->getChamp()->getValues() as $clef => $valeur)
{ ?>
<option value="<?php echo $valeur ?>"><?php echo $clef ?></option>
<?php
}
?>
</SELECT><br/>
<input type="<?php echo $formRecherche->getAct()->getType() ?>" name="<?php echo $formRecherche->getAct()->getName() ?>" value="<?php echo $formRecherche->getAct()->getValues() ?>">
<input type="submit" name="submit" value="Rechercher">
</form>
<div class="recherche">
Recherche: <?php echo $formRecherche->getChaine()->getFormValue() ?> dans le champs <?php echo $formRecherche->getChamp()->getFormValue() ?><br/>
<div class="<?php echo $formRecherche->getChaine()->getValues() ?>">
</div>
</div><br/>Nombre d'enregistrements trouvés: <?php echo $resultats ?>Ma page "index.php" principale:
Code PHP :
<?php
$dResponse = array();
$folders = array(array());
$dResponse['logo'] = 'Images/LogsManager_small.gif';
$dResponse['titre'] = 'LogsManager';
$dResponse['menu'][] = array('keytag' => 'accueil', 'link' => 'Boxes/Accueil/', 'Titre' => 'Accueil', 'mainpage' => '', 'display' => true);
$dResponse['menu'][] = array('keytag' => 'titres', 'link' => 'Modules/Titres/', 'Titre' => 'Logs', 'mainpage' => '', 'display' => true);
$dResponse['menu'][] = array('keytag' => 'logs', 'link' => 'Modules/Logs/', 'Titre' => 'Logs', 'mainpage' => '', 'display' => false);
$dResponse['menu'][] = array('keytag' => 'recherchelogs', 'link' => 'Modules/Logs/', 'Titre' => 'Rechercher log', 'mainpage' => 'recherche.php', 'display' => true);
$dResponse['menu'][] = array('keytag' => 'cftrcv', 'link' => 'Modules/Cft/', 'Titre' => 'ReceiveCFT', 'mainpage' => 'RCV.php', 'display' => true);
$dResponse['menu'][] = array('keytag' => 'cftsnd', 'link' => 'Modules/Cft/', 'Titre' => 'SendCFT', 'mainpage' => 'SND.php', 'display' => true);
$dResponse['style']['classique'] = 'Styles/classique.css';
$folders['classes'][] = 'libs/classes/';
$folders['classes'][] = 'libs/forms/';
?>Je n'ai pas collé ici les classes de form, de elementForm et validator. Non plus celles de RechercheForm étendant la classe form.
Merci pour vos remarques constructive ! je les attend avec impatience.
N'hésitez pas, si vous avez la moindre question !
lemouiX