CodeIgniter(こーどいぐにたー)

CodeIgniter3.0.3から

base_urlを未設定の場合、IPアドレスに設定される。

system/core/Config.php(3.0.2)

    if (isset($_SERVER['HTTP_HOST']) && preg_match('/^((\[[0-9a-f:]+\])|(\d{1,3}(\.\d{1,3}){3})|[a-z0-9\-\.]+)(:\d+)?$/i', $_SERVER['HTTP_HOST']))
    {
        $base_url = (is_https() ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST']
            .substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME'])));
    }

↓ system/core/Config.php(3.0.3)

    if (isset($_SERVER['SERVER_ADDR']))
    {
        $base_url = (is_https() ? 'https' : 'http').'://'.$_SERVER['SERVER_ADDR']
            .substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME'])));
    }

CodeIgniter3.x

Codeigniter2.x⇒Codeigniter3.x

Composerでインストール

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

言語ファイルのインストール

php bin/install.php translations develop

SESSIONを使う

Codeigniter2.xと違い、クッキーではなくdatabaseを使う

$config['sess_driver'] = 'database';
$config['sess_table_name'] = 'ci_sessions';

CodeIgniter 3 Session Library

DBのセッションテーブル

CREATE TABLE IF NOT EXISTS `ci_sessions` (
       `id` varchar(40) NOT NULL,
       `ip_address` varchar(45) NOT NULL,
       `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
       `data` blob NOT NULL,
       PRIMARY KEY (id),
       KEY `ci_sessions_timestamp` (`timestamp`)
);

Database Driver|Session Library:

使い方

登録

$_SESSION['hoge'] = 'piyo';

読み込み

echo $_SESSION['hoge'];

Codeigniter3 で PHPExcelを使う

CodeIgniter3.0でPHPExcel

罠(わな)

codeigniter2.xと同じ感覚でコントローラー名に「Index」とかつけると30分くらいはまる。

DB

MySQL関数対応表

MySQLCodeIgniter
mysql_num_rows($result)$query->num_rows()

1行目のみ返す

$query = $this->db->get();
$ret = $query->row_array();

複数のレコードを返すプロシージャを使う方法

$this->load->library('mydb');
$arr  = $this->mydb->GetMultiResults("CALL GetReferrals()");

Mydb.php

class Mydb
{
   private $CI, $Data, $mysqli, $ResultSet;

   /**
   * The constructor
   */

   function __construct()
   {
     $this->CI =& get_instance();
     $this->Data = '';
     $this->ResultSet = array();
     $this->mysqli = $this->CI->db->conn_id;
   }

    public function GetMultiResults($SqlCommand)
    {
    /* execute multi query */
    if (mysqli_multi_query($this->mysqli, $SqlCommand)) {
        $i=0;
        do
        {
             if ($result = $this->mysqli->store_result()) 
             {
                while ($row = $result->fetch_assoc())
                {
                    $this->Data[$i][] = $row;
                }
                mysqli_free_result($result);
             }
            $i++; 
        }
        while ($this->mysqli->next_result());
    }
    return $this->Data;

   }
}

CodeIgniter2.x

CodeIgniter3.0が最新版です。(2015年6月16日現在)

この記事では主に Ver.2.2 系を扱っていきます。

Ver.2.2 系はCodeIgniter2.2.2が最新版です(2015年6月16日現在)

CodeIgniterの互換性

  • CodeIgniter3.0 はPHP 5.2.4以上で使用できます。
  • CodeIgniter2.2 はPHP 5.1.6以上で使用できます。

CodeIgniter のバージョンの調べ方

CodeIgniter のバージョンの調べ方(A Day in Serenity @ kenjis)

この定数は、CodeIgniter 2.0 以降は、
   system/core/CodeIgniter.php

で、CodeIgniter 1.7.3 以前は、

    system/codeigniter/CodeIgniter.php

で定義されています。

Codeigniter2.x系でMySQLのストアドプロシージャの呼び出しでエラーが出るのを回避する

エラー

mysqli_num_rows() expects parameter 1 to be resource, boolean given

参考URL:Trying to 'call' stored procedures with CodeIgniter

Googleトレンドで各PHPフレームワーク人気調査

2013年頃から、Laravelが伸びてきてますが、下のベンチマークでは重いそうです。

思いのほかCakePHPが伸びてませんね。

CodeIgniterは日本では人気無いようです。

fuelphpは日本以外では人気無いようです。

Googleトレンドでチェック

2015年最新PHPフレームワーク(9つ)のベンチマーク

2015年最新PHPフレームワーク(9つ)のベンチマーク

Phalconが最速で、SlimとCodeIgniterが続きます。
FuelPHP、Silex、BEAR.Sundayが同じようなパフォーマンスです。

Last-modified: 2016-07-10 (日) 02:00:25 (742d)