Search code examples
phpframeworksviewlithium

How does the lithium PHP framework generate a $this context in a PHP page?


I've been investigating the Lithium PHP Framework and I don't understand how it sets $this->context; (particularly in this layout.)

Since you cannot simply re-assign $this obviously this layout will get included at some point and what confuses me even more is the fact that they use $this outside a class definition.

I haven't coded PHP in a while so please help me out here.


Solution

  • The first idea that strikes me is that this templating page is called from a method.

    class Viewer
    {
        public $html;
        private $title;
        private $content;
    
        public function __construct()
        {
            $this->html = new \Utilities\HTMLBag();
        }
        public function loadView($template)
        {
            ob_start();
            include 'path/to/views/'.$template.'.php';
            $this->content = ob_get_clean();
        }
        public function title()
        {
            return $this->title;
        }
    }
    

    From this point, the included $template can access any method of Viewer's class