I have a custom MVC PHP framework that has a router class, which calls a controller, which uses a model, then the controller presents the view, etc etc.
My problem is that I can't figure out technically how to allow variables to pass between the controller and the view, semantically. I could do a quick-and-dirty fix, but what I want to have is this for a controller:
class IndexController extends Controller{
    var $name = "John"; // instance variable
}
And have this for a view:
<p> <?=$name?> </p>
My question is this:
- How can I create a Controller->render() function, or something similar, that allows the view to access instance variables from the controller? and,
- How can I do this without doing klutzy things like $data['view']['name'] = "John";or having to write ten lines of code by default for any new controller I make. I want to do this so it's as DRY as possible.
Thanks.
Edit: FabioCosta's solution
I'm not sure I understand, so far I have my base controller like this:
<?php
    class Controller{
        public function __get($key){
            if(isset($this->$$key)) return $this->$$key;
        }
    }
?>
My base view class looks like this:
<?php
    class View{
         public $controller;
         public function render(){
         $this->controller = $this;
    }
?>
And I initialize from the router like this:
<?php
    $controller = new IndexController();
    $view = new IndexView();
    $view->render();
?>
However, this doesn't work, and I know I'm doing something wrong.
 
     
     
    