在我的header.php中,我有一个名为$ navigation的变量,并为其分配了一个类。$navigation = $this->nav_class = new \navigation_menu\Navigation();
当我访问index.php上的变量$ navigation时,它会抛出一个错误,说明未定义的变量“$ navigation”
但是当我直接在index.php上实例化它时就可以了。
我尝试在控制器页面上通过方法名称“index”传递$ navigation变量,它运行良好......
public function index()
{
$data['title'] = "Welcome";
$data['navigation'] = new \navigation_menu\Navigation();
$this->load->view('public/includes/header.php', $data);
$this->load->view('index', $data);
$this->load->view('public/includes/footer.php');
}
工作正常。但问题是,当我需要将该类用于多种方法时。我不想为每个方法实例化一个新对象
所以这引导我接下来的事__construct()。但是当我做了一个构造时,我得到了这个消息..
Severity: Notice
Message: Undefined property: PublicPage::$load
Filename: controllers/PublicPage.php
的sooo。我想我唯一的选择是在PublicPage.php(控制器页面)中定义一个名为navigation的新方法并返回类...这就是我做的事情
private function navigation (){
return $nav = new \navigation_menu\Navigation();
}
public function index()
{
$data['title'] = "Welcome";
$data['navigation'] = $this->navigation();
$this->load->view('public/includes/header.php', $data);
$this->load->view('index', $data);
$this->load->view('public/includes/footer.php');
}
效果很好。但现在我有两个没有意义的问题
任何帮助都会非常感激
谢谢!
答案 0 :(得分:0)
您到处使用$data
变量,但它超出了范围!
一种解决方案是将其定义为全局,如:
global $data;
...在您使用或需要的每种方法的开头 无需更改任何代码,它应该开箱即用。
另一个解决方案是将它作为类/对象属性,如果你只在这个类/对象中使用它(为什么要将它存储在外面呢?),如:
public $data;
并以
等所有方法访问它$this->data