J'ai expérimenté de première main l'étendue de l'horreur et du tir au pied que la laideur de PHP peut causer. Je suis sur mon prochain projet (vous vous demandez peut-être pourquoi je ne change pas de langue mais ce n'est pas pour ça que je suis ici) et j'ai décidé d'essayer de le faire correctement, ou du moins mieux, cette fois.Implémentation de la vue dans MVC ou MVP (en PHP)
J'ai quelques modèles définis, et j'ai commencé sur un contrôleur principal. Je suis à une fourchette dans mes décisions sur la façon de mettre en œuvre la vue. Jusqu'à présent, le contrôleur principal peut recevoir des listes de fonctions d'affichage à appeler, puis il peut diffuser la totalité de la page en un seul appel. Il ressemble à:
function Parse_Body()
{
foreach ($this->body_calls as $command)
{
$call = $command['call'];
if (isset($command['args'])) $call($command['args']);
else $call();
}
}
Mon dilemme est le suivant:
Serait-il préférable d'avoir toutes mes fonctions d'affichage retour le code HTML qu'ils génèrent, de sorte que le contrôleur principal peut juste echo $page;
ou si les les fichiers d'affichage utilisent du HTML brut en dehors de PHP, qui est édité dès sa lecture? Avec le premier, le contrôleur d'application principal peut contrôler précisément quand les choses sont sorties, sans abandonner simplement le contrôle complet au gré des affichages. Sans oublier que toutes ces listes de fonctions d'affichage à appeler (ci-dessus) ne peuvent pas vraiment être exécutées à partir d'un fichier d'affichage à moins qu'elles ne soient transmises. Avec cette dernière méthode, j'ai l'avantage de faire du HTML en HTML réel, au lieu de faire d'énormes blocs de chaînes PHP. De plus, je peux simplement inclure le fichier pour l'exécuter, au lieu d'appeler une fonction. Donc je suppose qu'avec cette méthode, un fichier est comme une fonction.
Toute contribution ou conseil s'il vous plaît?
Commencez juste une ligne avec 4 espaces pour le formatage du code. http://stackoverflow.com/editing-help –
J'ai essayé et échoué à plusieurs reprises. Peut-être parce que j'ai utilisé les balises de code réelles? – Tesserex