Pasar datos de Controller a View en una aplicación PHP MVC

En casi todos los tutoriales o respuestas en SO, veo una forma común de enviar datos desde un Controlador a la Vista, la Vista de clase a menudo se ve algo similar al código a continuación:

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;
    }
}

No entiendo por qué necesito colocar los datos en una matriz y luego llamar a extracto ($ this -> _ data). ¿Por qué no poner directamente algunas propiedades a la vista desde el controlador como

$this->_view->title = 'hello world';

Luego, en mi diseño o archivo de plantilla, podría hacer:

echo $this->title;

Respuestas a la pregunta(2)

Su respuesta a la pregunta