W prawie wszystkich samouczkach lub odpowiedziach na temat SO widzę popularny sposób wysyłania danych z kontrolera do widoku, widok klasy często wygląda podobnie do kodu poniżej:Przekazywanie danych z kontrolera do widoku w aplikacji PHP MVC
class View
{
protected $_file;
protected $_data = array();
public function __construct($file)
{
$this->_file = $file;
}
public function set($key, $value)
{
$this->_data[$key] = $value;
}
public function get($key)
{
return $this->_data[$key];
}
public function output()
{
if (!file_exists($this->_file))
{
throw new Exception("Template " . $this->_file . " doesn't exist.");
}
extract($this->_data);
ob_start();
include($this->_file);
$output = ob_get_contents();
ob_end_clean();
echo $output;
}
}
Nie rozumiem, dlaczego muszę umieścić dane w tablicy, a następnie wywołać extract ($ this -> _ data). Dlaczego nie wystarczy umieścić bezpośrednio pewne właściwości do widoku z kontrolera jak
$this->_view->title = 'hello world';
potem w moim układzie lub pliku szablonu mogłem tylko zrobić:
echo $this->title;
Dziękuję bardzo za wycinek, jest niesamowity;) – Matthew