はじめに
タイトルからわかるように、知見がないので調べて備忘録として残しております。
間違えなどあれば教えていただけると幸いです
簡潔に
・MVCモデルを採用
・他のフレームワークと比較して非常に軽量
・ドキュメントが充実
・データベース操作、フォームバリデーション、セッション管理、キャッシュ機能などの豊富なライブラリが標準で用意されている
同じPHPフレームワークのLaravelとは対照的で
【高速動作(軽量)】かつ【手軽さ】が魅力のフレームワーク
ライブラリについて
・データベースライブラリ
$this->load->database();
$query = $this->db->get('users'); // 'users'テーブルの全データ取得
foreach ($query->result() as $row) {
echo $row->name;
}
load->db->('テーブル名')
これだけの記述でテーブルからデータを取ることが可能。
業務ではSQLを使っているためこの記述はしていないがLaravelのクエリビルダと見た感じ同じそう。
・バリデーションライブラリ
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'label', 'required|min_length[5]',[
'required' => '「{field}」は入力必須です。',
'min_length' => '{field}は最低5文字必要です。'
]);
if ($this->form_validation->run() == FALSE) {
echo validation_errors();
} else {
echo "入力OK!";
}
libraryの引数にform_validation
set_rulesの引数は
第一引数がinputのnameの値
第二引数がメッセージに表示するフィールド
第三引数がバリデーションルール
第四引数がバリデーションエラーのメッセージ
もしvalidation_errorsを出力した際には
「label」は入力必須です。
labelは最低5文字必要です。
のように出力される。
・セッションライブラリ
$this->load->library('session');
$this->session->set_userdata('username', 'Taro');
echo $this->session->userdata('username');
libraryの引数にsession
set_userdataの第一引数にkey,第二引数にvalueをいれたらセッションに入る。
呼び出すときはkeyを指定して出力する。
だいたいコードで理解できると思うので以下ライブラリの説明は割愛します。↓
・アップデートライブラリ(ファイル)
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile')) {
echo $this->upload->display_errors();
} else {
echo "アップロード成功!";
}
・Emailライブラリ
$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->subject('メールテスト');
$this->email->message('こんにちは!');
$this->email->send();
・ページネーションライブラリ
$this->load->library('pagination');
$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
・Encryptionライブラリ(暗号化)
$this->load->library('encryption');
$plain_text = "シークレットデータ";
$cipher_text = $this->encryption->encrypt($plain_text);
echo $this->encryption->decrypt($cipher_text);
・Cartライブラリ(ショッピングカート)
$this->load->library('cart');
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'price' => 39.95,
'name' => '商品名'
);
$this->cart->insert($data);
・Image Manipulationライブラリ
$config['image_library'] = 'gd2';
$config['source_image'] = './uploads/image.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 150;
$config['height'] = 100;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
などなど
ライブラリの読み込みについて
上のコードを見ての通り
データベース以外は
$this->load->library('ライブラリ名');
で呼び出し可能。
まとめて呼び出す場合には
$this->load->library(array('ライブラリ名', 'ライブラリ名', 'ライブラリ名'));
このような記述でOK
ヘルパー関数について
ヘルパーを使うためにファイルごとで読み込む必要がある。
$this->load->helper('form');
// もしくは
$autoload['helper'] = array('form');
・form_open
echo form_open('controller/method', ['id' => 'my_form', 'class' => 'form-class']);
// ↓
<form method="post" action="http://example.com/controller/method" id="my_form" class="form-class">
※CSRF保護付き
・form_close
echo form_close();
// ↓
</form>
・form_input
echo form_input([
'name' => 'username',
'id' => 'username',
'value' => '初期値',
'class' => 'form-control'
]);
// ↓
<input type="text" name="username" id="username" value="初期値" class="form-control">
・form_password
echo form_password('password');
// ↓
<input type="password" name="password" value="">
・form_hidden
echo form_hidden('user_id', '123');
// ↓
<input type="hidden" name="user_id" value="123">
・form_textarea
echo form_textarea('comments', 'ここに入力...');
// ↓
<textarea name="comments">ここに入力...</textarea>
・form_dropdown
$options = [
'small' => 'Small Shirt',
'med' => 'Medium Shirt',
'large' => 'Large Shirt'
];
echo form_dropdown('shirt_size', $options, 'med');
// ↓
<select name="shirt_size">
<option value="small">Small Shirt</option>
<option value="med" selected="selected">Medium Shirt</option>
<option value="large">Large Shirt</option>
</select>
・form_submit
echo form_submit('submit', '送信');
// ↓
<input type="submit" name="submit" value="送信">
・form_label
echo form_label('ユーザー名', 'username');
// ↓
<label for="username">ユーザー名</label>
・form_checkbox
echo form_checkbox('agree', '1', FALSE, ['id' => 'agree']);
// ↓
<input type="checkbox" name="agree" value="1" id="agree">
・form_radio
echo form_radio('gender', 'male', TRUE, ['id' => 'male']);
echo form_radio('gender', 'female', FALSE, ['id' => 'female']);
// ↓
<input type="radio" name="gender" value="male" id="male" checked="checked">
<input type="radio" name="gender" value="female" id="female">