【发布时间】:2015-01-20 03:17:12
【问题描述】:
在我的 header.php 中,我有一个名为 $navigation 的变量,并为其分配了一个类。$navigation = $this->nav_class = new \navigation_menu\Navigation();
当我访问 index.php 上的变量 $navigation 时,它会抛出一个错误,提示 undefined variable "$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
太好了。我想我唯一的选择是在 PublicPage.php(控制器页面)中定义一个名为导航的新方法并返回类......这就是我所做的
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');
}
效果很好。但是现在我有两个没有意义的问题
- 为什么我不能从 index.php 上的 header.php 访问变量?
- 为什么 __construct() 不能在控制器上工作?
任何帮助将不胜感激
谢谢!
【问题讨论】:
标签: php codeigniter