軽量高速なPHPフレームワーク。動作条件がCodeIgniter3ならPHP5.6、CodeIgniter4ならPHP7.3なので少し前のサーバ環境でも問題なく動作します。:タグ「composer」での検索

PHPフレームワーク CodeIgniterに .env を導入する

RubyonRails や Laravelの .env をCodeIgniterにも導入します。
これによって WEBアプリの設定が .env に集約されるので、 .gitignore しておけば余計な情報が リポジトリに上がることはありません。

● vlucas/phpdotenv のインストール

codeigniter/application 以下にインストールします。

cd codeigniter/application
composer require vlucas/phpdotenv

● config/config.php の composer_autoload を TRUE にする

エディタで下記の行を TRUE に設定します。

$config['composer_autoload'] = TRUE;

● config/config.php の enable_hooks を有効にする

エディタで下記の行を TRUE に設定します。

$config['enable_hooks'] = TRUE;

● codeigniter/config/hooks.php に .env ファイル読み込み部分を追加

エディタで hooks.php の一番下に下記の行を 追記します。

codeigniter/config/hooks.php

$hook['pre_system'] = function() {
    try {
        $dotenv = Dotenv\Dotenv::createImmutable(APPPATH);
      // $dotenv = Dotenv\Dotenv::create(APPPATH);  // こちらは Dotenv の古いバージョンのやり方です
      $dotenv->load();
    } catch (Exception $e) {
      //
    }
    function env($variable, $default = null) {
      $value = getenv($variable);
      return ($value) ? $value : $default;
    }
};

● .env ファイルを用意する

codeigniter/application/.env を新規作成し、以下の内容を適宜書き換えて保存します。

APP_NAME="My-Application"
APP_URL="http://localhost:8000/"

DB_DRIVER="mysqli"
DB_HOST="localhost"
DB_USER="root"
DB_PASS="root"
DB_NAME="ci"

MAIL_DRIVER="smtp"
MAIL_HOST="YOUR.SERVER"
MAIL_PORT=25
MAIL_USERNAME=""
MAIL_PASSWORD=""
MAIL_ENCRYPTION="tls"
MAIL_FROM_ADDRESS="YOUR@ADDRESS"
MAIL_FROM_NAME="YourName"

STRIPE_SECRET_KEY=""
STRIPE_PUBLIC_KEY=""

あとは好きなところから コントローラーから

print_r( env('APP_NAME') );

として使用します。

● データベースの config ファイルから .env を参照する

config/database.php の次の行を

	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',
	'dbdriver' => 'mysqli',

↓ このように書き換えます

	'hostname' => env('DB_HOST'),
	'username' => env('DB_USER'),
	'password' => env('DB_PASS'),
	'database' => env('DB_NAME'),
	'dbdriver' => env('DB_DRIVER'),

● .env ファイルをブラウザから見えないようにする

.env ファイルが codeigniterの application フォルダに入っている場合は、外から見えることはありません。
別の場所に移動させたい場合は .htaccess を次の内容で作成します。

require valid-user
<Files ~ "^.(htpasswd|htaccess|digest|env)$">
    deny from all
</Files>

引用元 : https://github.com/jagroop/codeigniter-artisan

No.1197
01/20 14:36

edit

CodeIgniter
composer

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