Single_column という名前のライブラリを読み込もうとしています。このライブラリを作成し、ライブラリ フォルダーに設定します。この時点で、コード Igniter フレームワークを使用していることに言及する必要があります。Sinle_column クラスには、次のコードが含まれています。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Single_column
{
public function render( $id )
{
$CI =& get_instance();
// DB calls
// search for uri in db
$CI->load->model('m_single_column');
$image = $CI->m_single_column->getImageURI( $id );
$text = $CI->m_single_column->getText( $id );
// ==== HEADER
// eventually, this will be loaded from the db
$header_data['title'] = "Single Column Demo";
$header_data['css'][] = "single_column";
$CI->load->view('v_header', $header_data);
// ==== CONTENT
$content_data['content'] = '<div class="content-block">';
$content_data['content'] .= '<div class="image">';
$content_data['content'] .= '<img src="' . base_url() . $image . '" width="200" height="133" alt="my tractor"/>';
$content_data['content'] .= '</div>';
$content_data['content'] .= $text;
$content_data['content'] .= '</div><!-- end content-block-->';
$CI->load->view('v_content', $content_data);
// ==== FOOTER
$CI->load->view('v_footer');
}
}
?>
コントローラーフォルダーに、次の名前のクラスがあります。
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Master extends CI_Controller {
function __construct() {
parent::__construct();
}
public function _remap($method) {
// remap overrides function calls
// search for uri in db
$this->load->model('m_master');
$uri_id = $this->m_master->findURI(uri_string());
$page;
if ($uri_id != false) {
$this->{$page->controller}->render( $page->id );
} else {
show_404(uri_string());
}
}
}
?>
前述のコードはチュートリアルからのもので、私の問題は次の行にあります。
$this->{$page->controller}->render( $page->id );
表示されるエラーは次のとおりです。
Fatal error: Cannot access empty property in C:\xampp\htdocs\PhpProject1\application\controllers\master.php on line 24
実はrenderというメソッドを認識できないことに気づきました。それで、次のコード行を if ステートメントに入れてみました
$library= Single_column::$uri_id['id'];;
$this->load->library($library);
しかし、次のエラーを受け取りました: Fatal error: Class 'Single_column' not found in C:\xampp\htdocs\PhpProject1\application\controllers\master.php on line 22
さらに、$uri_id は sql オブジェクトを返します。でもオブジェクトのid属性だけ渡したい。
質問: ライブラリを呼び出すにはどうすればよいですか? クラスのメソッド(renderメソッド)に値を渡すにはどうすればよいですか? 前述の行が機能しなかったのはなぜですか?