我有一个名为的控制器Hello.php
,它只有一个名为world
. 控制器在construct
时间启动事务,world
函数回hello world
显并提交事务。
class Hello extends CI_Controller {
public function __construct() {
parent::__construct();
$this->db->trans_begin;
}
public function world(){
echo "hello world";
$this->db->trans_commit;
}
}
请注意:我的数据库已从 config/autoload.php 自动加载$autoload['libraries'] = array('database');
从config/routes.php
我已经将我的 404 错误路由到一个名为 bad_parameters.php 的控制器$route['404_override'] = 'bad_parameters'
;
class Bad_parameters extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function index(){
echo "before rollback - ";
$this->db->trans_rollback();
echo "after rollback";
}
}
现在我要做3件事:
- 打电话给
hello/world
- 期待Hello World
然后提交 - 呼叫
hello/fake
- 期待 404 路由,然后before rollback - after rollback
- 呼叫
fake/fake
- 期待 404 路由,然后before rollback - after rollback
相反,这就是发生的事情
- 呼叫-按预期
hello/world
获得然后 COMMITHello World
- 打电话给
hello/fake
-得到before rollback
<-我的问题是关于这个 - 呼叫
fake/fake
-before rollback - after rollback
达到预期
我在第 1 点收到的错误消息。2是:
遇到 PHP 错误
严重性:通知
消息:未定义的属性:Bad_parameters::$db
文件名:控制器/bad_parameters.php
这是说 $db 未定义,而我确实从config/autoload.php
.
现在,如果我包含$this->load->database();
在 CONSTRUCTOR 中bad_parameters.php
,则第 2 点按预期显示“回滚前 - 回滚后”,没有任何错误。
即使 2 号和 3 号都是 404 路由,3 号示例工作正常,但 2 号示例存在此问题。为什么会发生这种情况?我已经在自动加载我的数据库。