【发布时间】:2012-08-11 15:20:03
【问题描述】:
我的 Codeigniter 2.1.0 应用程序中有这个错误控制器:
<?php
class Error extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
set_status_header(404);
$data->menuItems = Main::_menu();
$data->title = "404 error !";
$data->pageview = 'templates/404';
$this->load->view('templates/main', $data);
}
public function facebook()
{
set_status_header(404);
$data->menuItems = Main::_menu();
$data->title = "Facebook error !";
$data->pageview = "templates/facebook_error";
$this->load->view('templates/main', $data);
}
}
?>
主控制器_菜单:
<?php
class Main extends CI_Controller
{
// ... a lot of methods here ...
public static function _menu()
{
static $menuItems = array( //just a simple array
);
}
}
?>
facebook() 方法与 index() 完全一样,但是 index 工作正常,facebook() 抛出这个消息:
Fatal error: Class 'Main' not found in /var/www/MYApplicationName/application/controllers/error.php on line 22
地球怎么可能?如何从 facebook() 方法到达Main::_menu()?
【问题讨论】:
-
是否包含 MainController 文件?该错误意味着它找不到类,通常是因为脚本中没有包含类文件。
-
这是整个错误类。 index() 方法中没有其他代码。如果这两个相同,但一个不能调用另一个可以的,那怎么可能?还是 index() 方法是一种特殊的方法?是的,我知道如何包含一些东西,但我的问题是 index() 怎么可能工作???
-
通常的codeigniter地方
application/controllers/main.php -
这确实是一个有趣的行为,CI 类加载器应该没有区别(但显然是这样)。我可以建议相反的方式:将您的
menu实现为视图助手? -
hmm :D 你的意思是整个功能还是如何?我什至在这里问过这个问题:codereview.stackexchange.com/questions/11277/…
标签: php codeigniter error-handling controller