CodeIgniter

環境構築

Codeigniterの3.Xのマニュアルはこちら

$ cd $HOME
$ mkdir -p work/app
$ cd work/app
$ export PATH=$PATH:$HOME/work/app/
$ curl -sS https://getcomposer.org/installer | php
$ ./composer.phar require codeigniter/framework:3.* --dev
$ ./composer.phar require monolog/monolog --dev
$ curl -Lo phpunit.phar https://phar.phpunit.de/phpunit.phar
$ chmod +x phpunit.phar

monologはPSR-3準拠のインターフェースを有したFile.Socket,Mail,DBなど、様々なサービスに対してログを出力するライブラリ。多数のハンドラが用意されていて、高度なログ取得機能が実装できる。
monologはRFC5424で定義されたすべて(8つ)のログレベルがサポートされている。

データベースにmysqlを使う場合(phpは7.0を想定)

$ sudo apt install mysql-server mysql-client mysql-common php7.0-mysql
※インストールの時にアカウントの設定を行うので控えておくこと
$ mkdir public
$ cp -p ./vendor/codeigniter/framework/index.php ./public/
$ ( cd ./vendor/codeigniter/framework ; tar cpf - application ) | tar xpf -

$ vi ./public/index.php
$ diff public/index.php.org public/index.php
100c100
< $system_path = 'system';
---
>   $system_path = '../vendor/codeigniter/framework/system';
117c117
< $application_folder = 'application';
---
>   $application_folder = '../application';

$ vi ./application/config/config.php
$ diff ./application/config/config.php.org ./application/config/config.php
139c139
< $config['composer_autoload'] = FALSE;
---
> $config['composer_autoload'] = realpath(APPPATH."../vendor/autoload.php");

$ ./bin/server.sh

mysqlを使うサンプル

データベースを作成する

$ mysql -u root -p
※ここでパスワード聞かれるが、インストール時に設定した値を入力
> show databases;
何も無い
> create database codeigniter default character set utf8;
> grant all privileges on codeigniter.* to USER@localhost indentified by PASSWORD;
※USERとPASSWORDは dababase.phpに設定する値と同じものにする。ここではUSERとPASSWORD共にmysqlと置き換えて入力しておいてください。
> show databases;
※できた
> use codeigniter
> create table testdb (
  id int not null auto_increment,
  name varchar(64),
  email varchar(256),
  primary key (id)) engine=MYISAM default charset=utf8;
> insert into testdb (name, email) values ('testuser1', 'testuser1@snowdrop.asia');
※登録する内容(testuser1)はお好きにどうぞ(*'▽')
> show tables;
> show columns from testdb;
> quit

codeigniterのデータベース接続設定をする

$ vi ./application/config/database.php
---
$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'mysql',
        'password' => 'mysql',
        'database' => 'codeigniter',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);
---

※defaultがグループ名。$this->load->dababase(‘defult’)のように指定できる。defaultは省略可。
※username/passwordはmysqlのgrantした時の値を入れる。データベース名はcreate databaseした時のデータベース名。ここでは codeigniterとして作成した。

データベースに接続してみるテスト

$ vi ./application/controllers/Sample.php
---
< ?php
class Sample extends CI_Controller {
  public function index() {
    $this->load->database();
    $query = $this->db->query('SELECT name,email FROM testdb');
    var_dump($query->result());
  }
}
?>
---
※$this->load->database();はautoload.phpで既に設定していれば不要。(librariesのarrayにdatabaseがあるか)

$ ./bin/server.sh
※起動してたら止めて実行しなおす

ブラウザで以下の通りアクセスするとDBのdumpが出力されるはず!
http://localhost:8000/index.php/sample