*CodeIgniter(こーどいぐにたー) [#hd445424]
#contents
*CodeIgniter3.0.3から [#o6c74782]
 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 [#w41a5565]
-[[CodeIgniter 3のユーザーガイド(User Guide)まとめ:http://symfoware.blog68.fc2.com/blog-entry-1595.html]]
-[[Codeigniter ユーザガイド 日本語翻訳について:https://github.com/NEKOGET/ci_user_guide_src/wiki/Codeigniter-%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%AC%E3%82%A4%E3%83%89-%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%BF%BB%E8%A8%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]]
-[[CodeIgniter3 ユーザーガイド:http://pneskin2.nekoget.com/codeigniter/3/user_guide/]]
-[[CodeIgniter3 User Guide:http://www.codeigniter.com/user_guide/index.html]]
**Codeigniter2.x⇒Codeigniter3.x [#e9ffe6fb]
-[[Codeigniter3フレームアップデート:http://www.slideshare.net/ssuser0533cc/codeigniter3]]

**[[Composer>プログラミング/Composer]]でインストール [#h83ee7fe]
 composer create-project kenjis/codeigniter-composer-installer codeigniter
-[[CodeIgniter 3.0をコマンド一発でインストールするCodeIgniter Composer Installer:http://blog.a-way-out.net/blog/2015/04/24/codeigniter-composer-installer/]]
-[[[初心者向け] Codeigniter3をComposerを使ってインストールして動かすまで:http://rdlabo.jp/codeigniter-302.php]]

言語ファイルのインストール
 php bin/install.php translations develop

**SESSIONを使う [#tb0f303e]
Codeigniter2.xと違い、クッキーではなくdatabaseを使う

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

[[CodeIgniter 3 Session Library:https://www.lalcs.com/2015/03/19/1644/]]

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::http://www.codeigniter.com/userguide3/libraries/sessions.html#database-driver]]
***使い方 [#zadcac1d]
登録
 $_SESSION['hoge'] = 'piyo';
読み込み
 echo $_SESSION['hoge'];

**Codeigniter3 で PHPExcelを使う [#ta70e9ed]
[[CodeIgniter3.0でPHPExcel:http://pg.4696.info/php/codeigniter/codeigniter30-phpexcel.html]]

**罠(わな) [#w64db5fa]
codeigniter2.xと同じ感覚でコントローラー名に「Index」とかつけると30分くらいはまる。
-[[odeIgniter 3 予約語について(General Topics - Reserved Names):http://symfoware.blog68.fc2.com/blog-entry-1597.html]]


**DB [#va905248]
***MySQL関数対応表 [#t92564af]
|~MySQL|~CodeIgniter|
|mysql_num_rows($result)|$query->num_rows()|


***1行目のみ返す [#webd1298]
 $query = $this->db->get();
 $ret = $query->row_array();

***複数のレコードを返すプロシージャを使う方法 [#yf711fa8]

 $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 [#sfa0149a]
**CodeIgniter3.0が最新版です。(2015年6月16日現在) [#yea41d4d]
この記事では主に Ver.2.2 系を扱っていきます。

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

-[[CodeIgniter 公式HP:http://www.codeigniter.com/]]
-[[過去バージョンをダウンロード:http://www.codeigniter.com/download]]

**CodeIgniterの互換性 [#m9186e6d]
-CodeIgniter3.0 はPHP 5.2.4以上で使用できます。
-CodeIgniter2.2 はPHP 5.1.6以上で使用できます。

**CodeIgniter のバージョンの調べ方 [#p9dc408f]
[[CodeIgniter のバージョンの調べ方(A Day in Serenity @ kenjis):http://d.hatena.ne.jp/Kenji_s/20120211/1328963721]]
 この定数は、CodeIgniter 2.0 以降は、
    system/core/CodeIgniter.php
 
 で、CodeIgniter 1.7.3 以前は、
 
     system/codeigniter/CodeIgniter.php
 
 で定義されています。

**Codeigniter2.x系でMySQLのストアドプロシージャの呼び出しでエラーが出るのを回避する [#wc0e6258]
エラー
 mysqli_num_rows() expects parameter 1 to be resource, boolean given

参考URL:[[Trying to 'call' stored procedures with CodeIgniter:http://stackoverflow.com/questions/9046075/trying-to-call-stored-procedures-with-codeigniter]]

**Googleトレンドで各PHPフレームワーク人気調査 [#l63de4cc]
2013年頃から、Laravelが伸びてきてますが、下のベンチマークでは重いそうです。

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

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

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

[[Googleトレンドでチェック:http://www.google.com/trends/explore#q=%2Fm%2F02qgdkj%2C%20%2Fm%2F09t3sp%2C%20FuelPHP%2C%20Symfony%2C%20Laravel&cmpt=q&tz=]]

**2015年最新PHPフレームワーク(9つ)のベンチマーク [#f81acbfe]
[[2015年最新PHPフレームワーク(9つ)のベンチマーク:http://blog.a-way-out.net/blog/2015/03/26/php-framework-benchmark/]]
 Phalconが最速で、SlimとCodeIgniterが続きます。
 FuelPHP、Silex、BEAR.Sundayが同じようなパフォーマンスです。