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.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つのことをするつもりです:
- 呼び出し- 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 番の例にはこの問題があります。なぜこれが起こる必要がありますか?すでにデータベースをオートロードしています。