を実行しようとしていたファイルである私のコントローラ
class Booking extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array("form", "url"));
$this->load->library('session');
$this->load->database();
}
public function get_calendar() {
$this->load->view('includes/create_calendar');
}
}
です「スーパーオブジェクト」で使用できるクラスの1つを使用する必要がある場合は、最初にスーパーオブジェクトのインスタンスを取得する必要があります。
$CI =& get_instance();
$CI->db->get('calendar');
このDBクラスはロードされていない場合もあります。その場合は、その後、あなたがDBを使用する前に:
class Test {
public $foo = 'bar';
public function index() {
function baz(){
return $this->foo;
}
echo baz();
}
}
$t = new Test;
$t->index();
:
$CI->load->database();
はできるだけ早くあなたがその機能に行くように、明確にするために、あなたはこの簡単なテストのように、変数のスコープから$これを削除しました
次のような何かを行うことができますが、それは本当に厄介です:
class Test {
public $foo = 'bar';
public function index() {
function baz($x) {
return $x->foo;
}
echo baz($this);
}
}
$t = new Test;
$t->index();
あなたがするための最善のことは、あなたがやっていることを行うには別のクリーンな方法を見つけることです。あなたは通常、あなたのビューであなたのデータベースと関数への呼び出しを望んでいません。それは、MVCのすべてについてのことです。
私は自分の答えを更新しました。なぜそれが起こっているのかを知るには、これを参照してください:http://php.net/manual/en/language.variables.scope.php –