我正在学习Codeigniter。如您所知,首次安装软件包时,控制器中会有一个名为welcome.php的默认文件。
我尝试将该页面修改为index.php,这是代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Index extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
我还更改了配置文件中的route.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'Index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
然后我输入此路径访问该页面:http://localhost/CI/index.php
,但它说有两个错误:
- 消息:未定义属性:Index :: $ load。文件名:controllers / Index.php
- 消息:在null上调用成员函数视图()。文件名:控制器/ index.php的
醇>
我是否忘记改变别的东西以使其有效?
答案 0 :(得分:2)
我下载了CI3.0.2并在我的计算机上尝试了您的代码。我遇到了同样的问题,经过几次调试后我发现了导致这个问题的原因。
你的类是索引,你的函数是索引二,在php类中,当你没有定义构造函数__construct
时,它会尝试查找是否有一个与类名同名的方法Index
,所以在这种情况下index
函数是类Index
的构造函数。如果这让您感到困惑,请参阅此文档:constructor php official document
解决方案:
class Index extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('welcome_message');
}
}