PHPプログラムに関する各種メモ書き

PHPフレームワークCodeIgniterの導入とサンプル

CodeIgniterはPHPフレームワークの中でも比較的シンプルでフレームワーク初学者にはCakePHPよりおすすめします。 動作も高速です。

●0-A.インストール(公式サイトからダウンロードする方法)

  • http://www.codeigniter.com/download からダウンロード
  • 解凍してできたフォルダ「CodeIgniter-3.1.3」を「codeigniter」にリネームする
  • フォルダ 「codeigniter」直下の以下のファイルとフォルダは不要なので削除する
    composer.json
    contributing.md
    license.txt
    readme.rst
    user_guide(フォルダ)
    
  • フォルダ「codeigniter」をサーバの一番上(もしくは任意の場所)の階層にアップロード

●0-B.インストール(composerを使用する方法)

サーバの任意のディレクトリ(この場合では ~/php_composer/ )へcomposerをインストールします。

cd ~/php_composer/
curl -sS https://getcomposer.org/installer | php

(インストール後に composer.phar のパスが表示されます。これがcomposerコマンドの場所です。)

.bash_profileなどにパスを追加 vi などで下記の行を追加します。

PATH="$PATH":~/php_composer/

bach を再起動したら「CodeIgniter Composer Installer」を使ってCodeIgniterをインストールします。

■ CodeIgniter Composer Installer https://github.com/kenjis/codeigniter-composer-installer

CodeIgniterをインストールしたディレクトリから以下を実行

composer.phar create-project kenjis/codeigniter-composer-installer codeigniter

1. 【設定ファイルの変更】

codeigniter/application/config/routes.php を編集

$route['default_controller'] = 'welcome';

この行の 'welcome' を 'top' に変更します。

$route['default_controller'] = 'top'; // welcome → top に変更

2. 【コントローラーファイルの作成】

codeigniter/application/controllers/Welcome.php を コピーしてファイル名「Top.php」に変更する

ファイル名は「Top.php」(先頭は大文字)でなければいけません。

codeigniter/application/controllers/Top.php を編集

中身は以下のようにします。(クラス名「Top」先頭は大文字でなければいけません)

<?php
class Top extends CI_Controller {
	public function index()
	{
		$this->load->view('topview');
	}
}

とします。

3. 【ビューファイル(HTMLテンプレート)の作成】

codeigniter/application/views/welcome_message.php を コピーしてファイル名「topview.php」に変更する

codeigniter/application/views/topview.php を編集

拡張子は .php ですが 中身はHTMLファイルなので以下の様な内容にします。

<html>
<body>
<h1>test</h1>
</body>
</html>

ここで
http://localhost/codeigniter/index.php/Top
にアクセスしてテンプレートが表示されることを確認します。

4. 【データベースの作成】

今回 データベースにはsqlite3 を使用してみます。

codeigniter/application/config/database.php を編集します

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => APPPATH.'sqlite3/test.sqlite3',
	'dbdriver' => 'sqlite3',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => TRUE,
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

フォルダcodeigniter/application/sqlite3/ を作成する。

設定ファイル/codeigniter/application/config/migration.php の編集

$config['migration_enabled'] = TRUE;  		// FALSE → TRUE に変更
$config['migration_type'] = 'sequential';	// マイグレーション管理を「日付」→「連番」に変更
$config['migration_version'] = 1;					// 現在のバージョン

フォルダcodeigniter/application/migrations/ を作成する。

フォルダ migrations の中にファイル 001_create_table.php を作成し以下の内容で保存

<?php
class Migration_Create_table extends CI_Migration {
    public function __construct(){
        parent::__construct();
    }
    public function up(){
        $this->dbforge->add_field(array(
            'data_id' => array(
                'type' => 'INT',
                'unsigned' => TRUE,
                'auto_increment' => TRUE
            ),
            'user_name' => array(
                'type' => 'VARCHAR',
            ),
            'modified_date' => array(
                'type' => 'TEXT',
            ),
        ));
        $this->dbforge->add_key('data_id', true);
        $this->dbforge->create_table('user_dt');
    }
    public function down(){
        $this->dbforge->drop_table('user_dt');
    }
}

↑このファイルはSQL文で言うところの

CREATE TABLE mandolin_chord_dt (
  data_id integer PRIMARY KEY NOT NULL,
  user_name varchar NOT NULL,
  modified_date text
);

になります。

マイグレーションを実行するコントローラ codeigniter/application/controllers/Migrate.php を作成し以下の内容で保存

<?php
class Migrate extends CI_Controller
{
	public function index(){
	        $this->load->library('migration');
	        if ($this->migration->current() === FALSE){
	                show_error($this->migration->error_string());
	        }
	}
}

http://localhost/codeigniter/index.php/migrate/ を実行してデータベースを作成。

codeigniter/application/sqlite3/test.sqlite3 が作成されていることを確認します
またテーブルも正しく作成されているかどうか確認します

5. データベースへのアクセス

codeigniterはデータベースへのアクセスクラスを持っています。 使い方は以下のとおり( test_dt から全件取得し表示する例。)

$this->load->database();
$this->db->from('test_dt');
$this->db->select('*');
$query = $this->db->get();
$data_loop = $query->result_array();
print_r($data_loop);

6. Codeigniterのバージョンの調べ方

system/core/CodeIgniter.php

にバージョン記述があります。

CodeIgniter 3.0でPHPUnitを使う post http://blog.a-way-out.net/blog/2015/05/19/ci-phpunit-test/

関連エントリー

No.950
07/08 00:18

edit

CodeIgniter
composer