(使用 PHP 风格的代码)
不要想象我们有控制器,其中我们有字符串数据数组:
class Controller {
private $data = array('a', 'b', 'c', 'd', 'e');
}
现在控制器必须将该数据传递给 View 以生成让我们说这样的 HTML:
<p>a</p>
<p>b</p>
<p>c</p>
<p>d</p>
<p>e</p>
问题:
我们是否应该将所有数组传递给 View 以便它处理自身内部的数组数据,例如:
class Controller {
private $data = array('a', 'b', 'c', 'd', 'e');
function __construct($data) { // Assigns data array to view
$view = new View;
$view->produceHTML($data)
}
}
class View {
public function produceHTML($data) {
foreach($data as $value) {
echo "<p>$value</p>" . PHP_EOL; // PHP_EOL - PHP Predifined constant (End Of Line)
}
}
}
或者我们应该为每个元素定义不同的视图,例如:
class Controller {
private $data = array('a', 'b', 'c', 'd', 'e');
function __construct($data) { // Assigns data array to view
$view = new View;
$view->produceHTML($data)
}
}
class View {
public function produceHTML($data) {
foreach($data as $value) {
$this->produceP($value);
}
}
private function produceP($value) {
echo "<p>$value</p>" . PHP_EOL;
}
}
使用短数据值仅用于示例。在大多数情况下,我遇到了更复杂的视图,它们会产生div
带有大量嵌套元素的大 s。
但是将元素集合发送到 View 的最佳做法是什么?