すべてのコントローラーで同じコードを何度も繰り返さないようにしています。そのため、データをフェッチする関数を親コントローラーに配置し、そのデータを子コントローラーに渡そうとしています。
class Frontend_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('configOptionsModel');
$this->db->where('configid = "2"');
$specialdata['bgimage'] = $this->configOptionsModel->get();
}
}
子コントローラーのコードは次のとおりです
class Home extends Frontend_Controller {
public function __construct() {
parent::__construct();
print_r($this->specialdta); // line where error occurs
die();
}
public function index()
{
$data['main_content'] = 'home';
$this->load->view('frontEnd/template',$data);
}
}
次のエラーが表示されます。
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Home::$specialdta
Filename: controllers/home.php
Line Number: 9
案の定、9 行目は print_r($this->specialdta); です。
コントローラー (クラス) を拡張すると、親コントローラー (クラス) のメソッドとプロパティにアクセスできることはわかっています。これらは public と宣言されているからです。
誰かが私が間違っていることを説明できますか?
よろしく、ゾラン