Включить однажды ob_get_contents неопределенные переменные

В моем admin.php я установил свой $controller и он прекрасно работает как динамическая CMS, проблема в том, что файлы, которые я использую в качестве шаблонов, не распознаются $controller в них.

admin.php

include_once("configuration.php");
require("cms.php");
$controller = new CMS();
...
$controller->template("body");

cms.php

Class CMS{
   /*New template function*/
   function template($file){
      if( isset($file) && file_exists($file.".php") ){
         include_once($file.".php");
      }else{
         echo "";
      }
    }

  /*Old template function*/
  function template($file){
     if(isset($file) && file_exists($file.".php")){
        ob_start();
        include($file.".php");
        $template = ob_get_contents();
        return $template;
       } else {
         echo "";
       }
   }

}

Любая страница шаблона

var_dump($controller);

Какой отголосок Notice: Undefined variable: controller in

Будет проще, если я смогу $controller быть доступным без необходимости каждый раз звонить. Я что-то здесь упускаю, почему $controller неопределен на любой странице шаблона?

ОБНОВИТЬ

То, что мне показалось работающим, это снова добавить var

Class CMS{
   /*New template function*/
   function template($file){
      if( isset($file) && file_exists($file.".php") ){
         $controller = $this;
         include_once($file.".php");
      }else{
         echo "";
      }
    }
}

это приемлемо?

0 ответов

Другие вопросы по тегам