Ho sempre pensato che nel tipico design MVC è una cattiva pratica costruire e amp; concatena stringhe HTML in qualsiasi file o classe PHP che non sia strettamente un modello.
Sto lavorando su un grande progetto con linee guida rigorose, e mentre è vietato inserire qualsiasi codice HTML nel controller PHP, è giusto che il gioco abbia sotto-oggetti PHP che potrebbe generare molte stringhe di codice HTML che vengono poi passate nel modello.
Questi "sottooggetti" contengono una logica aggiuntiva che potrebbe cambiare l'HTML a seconda delle condizioni.
Quindi le mie 2 domande principali sono:
- Questo è considerato MVC?
- Questi oggetti sono considerati parte della vista o sono un franco sul modello e sulla vista?
Esempio:
<?php
/* controller.php */
class KittenController {
protected $view = 'view.html';
public function render (Request $request) {
$data = $this->getDynamicData(); // get some data
$object = $this->getObject(); // get a PHP object
$this->setField('foo', $data['bar']);
$this->setField('baz', $object->render());
}
}
<?php
/* object.php */
class Object {
public function render () {
$html = '';
$html .= '<div class="my-cool-html">';
if ($this->hasDuck()) {
$html .= '<p>I have a duck...</p>';
}
else {
$html .= '<p>No duck here...</p>';
}
$html .= '</div>';
return $html;
}
}
<!-- an html template -->
<html>
<body>
<div class="blah">
[[foo]]
</div>
<footer>
[[baz]]
</footer>
</body>
</html>