Hello.phpというメソッドが 1 つしかないというコントローラーがあり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.php404 エラーを 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つのことをするつもりです:
- 呼び出し- COMMITを
hello/world期待Hello World - への呼び出し
hello/fake- 404 ルーティングを想定してからbefore rollback - after rollback - への呼び出し
fake/fake- 404 ルーティングを想定してからbefore rollback - after rollback
INSTEAD、これが起こることです
- 呼び出し
hello/world-Hello World期待どおりに COMMIT を取得 - への呼び出し
hello/fake- 取得before rollback<--私の質問はこれについてです - への呼び出し- 期待どおり
fake/fakeに取得before rollback - after rollback
ポイント番号で表示されるエラーメッセージ。2 は次のとおりです。
PHP エラーが発生しました
重大度: 通知
メッセージ: 未定義のプロパティ: Bad_parameters::$db
ファイル名: controllers/bad_parameters.php
からデータベースを自動ロードしましたが、 $db は未定義であると言っていますconfig/autoload.php。
今、私がコンストラクターに含める$this->load->database();と、bad_parameters.phpポイント2はエラーなしで期待どおりに「ロールバック前 - ロールバック後」を示します。
2 番と 3 番の両方が 404 ルーティングですが、3 番の例は正常に動作していますが、2 番の例にはこの問題があります。なぜこれが起こる必要がありますか?すでにデータベースをオートロードしています。