CodeIgniter4を一時的に開発版に変更する

(2020-12-30 追記) CodeIgniter 4.0を開発版にアップデートする を書きました。

Composer で codeigniter4/appstarter から CodeIgniter4 をインストールした場合、リリース版の CodeIgniter4 (執筆時点では 4.0.4)がインストールされます。

これを一時的に最新の開発版に変更する方法があります。

CodeIgniter4 を開発版への変更する

プロジェクトのルートフォルダで builds development コマンドを実行すると、最新の開発版に変更できます。

$ php builds development

これで一部のファイルが変更されました。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   app/Config/Paths.php
    modified:   composer.json
    modified:   phpunit.xml.dist

Composer パッケージを更新すると、CodeIgniter4 が開発版になります。

$ composer update

CodeIgniter4 をリリース版に戻す

リリース版に戻すには、builds release コマンドを使います。

$ php builds release

そして、Composer パッケージを更新します。

$ composer update

これでリリース版に戻りました。

関連

参考

Tags: codeigniter, codeigniter4

CodeIgniter4のコードジェネレータ

この記事は CodeIgniter Advent Calendar 2020 - Qiita の7日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

CodeIgniter 4.0.4 には含まれていないコードジェネレータが、最新の開発版には含まれています。

(2021-02-23 追記) コードジェネレータはCodeIgniter 4.0.5以降に含まれています。

CodeIgniter4 開発版への変更

codeigniter4/appstarter から CodeIgniter4 をインストールした場合、以下のコマンドを実行すると、最新の開発版に変更できます。

$ php builds development
$ composer update

なお、リリース版に戻すには、builds release コマンドを使います。

$ php builds release
$ composer update

Generators コマンドの確認

spark list コマンドでコマンドの一覧を確認できます。

以下の Generators があります。

$ php spark list
...
Generators
  make:command       Creates a new spark command.
  make:controller    Creates a new controller file.
  make:entity        Creates a new entity file.
  make:filter        Creates a new filter file.
  make:migration     Creates a new migration file.
  make:model         Creates a new model file.
  make:scaffold      Creates a complete set of scaffold files.
  make:seeder        Creates a new seeder file.
  migrate:create     [DEPRECATED] Creates a new migration file. Please use
                     "make:migration" instead.
  session:migration  Generates the migration file for database sessions.

spark help コマンドでヘルプを表示できます。

$ php spark help make:controller

CodeIgniter v4.0.4 Command Line Tool - Server Time: 2020-12-08 20:00:09 UTC+09:00

使用法:
  make:controller <name> [options]

説明:
  Creates a new controller file.

引数:
  name  The controller class name

オプション:
  --bare     Extends from CodeIgniter\Controller instead of BaseController
  --restful  Extends from a RESTful resource. Options are 'controller' or 'presenter'.
  -n         Set root namespace. Defaults to APP_NAMESPACE.
  --force    Force overwrite existing files.

コントローラの作成

試しに Welcome コントローラを作成してみましょう。

$ php spark make:controller Welcome

CodeIgniter v4.0.4 Command Line Tool - Server Time: 2020-12-08 20:02:00 UTC+09:00

Created file: APPPATH/Controllers/Welcome.php

以下のファイルが作成されました。

app/Controllers/Welcome.php

<?php

namespace App\Controllers;

use App\Controllers\BaseController;

class Welcome extends BaseController
{
    public function index()
    {
        //
    }

}

なお、開発版のドキュメントは以下にあります。

この記事は CodeIgniter Advent Calendar 2020 - Qiita の7日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

参考

Tags: codeigniter, codeigniter4

CodeIgniter4の設定

(2022-12-17 追記) この記事は古くなっています。 「CodeIgniter 4.2の初期設定」 を参照してください。

この記事は CodeIgniter Advent Calendar 2020 - Qiita の6日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

設定ファイル

CodeIgniter4 の設定ファイルは、プロジェクトのルートに配置する .env ファイルと、app/Config/ 以下の設定ファイルがあります。

.env ファイル

.env はインストール直後には存在せず、サンプルとしての env ファイルが用意されています。env.env にコピーすれば OK です。

  • .env は環境変数を設定するためのものです。開発環境固有の設定値(データベース接続情報など)を設定します。
  • .env は Git などのバージョン管理に含めてはいけません。
  • .env はすでに定義されている環境変数は変更しません。
  • CodeIgniter4 の設定クラスがインスタンス化される時に、対応する環境変数があるとその値がプロパティに自動的に設定されます。

設定の変更箇所

多くのプロジェクトで変更するであろう設定は以下になります。

.env ファイル

開発環境では、.envCI_ENVIRONMENTdevelopment に変更します。それと、app.baseURL を設定します。

--- env 2020-07-16 12:44:28.000000000 +0900
+++ .env    2020-12-10 11:57:37.000000000 +0900
@@ -14,13 +14,13 @@
 # ENVIRONMENT
 #--------------------------------------------------------------------

-# CI_ENVIRONMENT = production
+CI_ENVIRONMENT = development

 #--------------------------------------------------------------------
 # APP
 #--------------------------------------------------------------------

-# app.baseURL = ''
+app.baseURL = http://localhost:8080/
 # app.forceGlobalSecureRequests = false

 # app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'

(2020-12-10 追記) app.baseURL の設定を追記しました。

それとデータベース接続設定を変更するでしょう。

@@ -49,11 +49,11 @@
 # DATABASE
 #--------------------------------------------------------------------

-# database.default.hostname = localhost
-# database.default.database = ci4
-# database.default.username = root
-# database.default.password = root
-# database.default.DBDriver = MySQLi
+database.default.hostname = localhost
+database.default.database = ci4tutorial
+database.default.username = dbuser
+database.default.password = dbpassword
+database.default.DBDriver = MySQLi

 # database.tests.hostname = localhost
 # database.tests.database = ci4

また、ログレベルを上げた方がいいでしょう。

@@ -99,3 +99,5 @@
 # honeypot.name = 'honeypot'
 # honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
 # honeypot.container = '<div style="display:none">{template}</div>'
+
+logger.threshold = 9

app/Config 設定ファイル

設定ファイルでは、デフォルトの言語を日本語 ja に、タイムゾーンを日本時間に変更するでしょう。

なお、システムメッセージを日本語にするには、別途、codeigniter4/translations のインストールが必要です。CodeIgniter4のシステムメッセージを日本語にする を参照してください。

--- a/app/Config/App.php
+++ b/app/Config/App.php
@@ -63,7 +63,7 @@ class App extends BaseConfig
| should run under for this request.
|
*/
-   public $defaultLocale = 'en';
+   public $defaultLocale = 'ja';

        /*
        |--------------------------------------------------------------------------
@@ -99,7 +99,7 @@ class App extends BaseConfig
| dates with the date helper, and can be retrieved through app_timezone()
|
*/
-   public $appTimezone = 'America/Chicago';
+   public $appTimezone = 'Asia/Tokyo';

        /*
        |--------------------------------------------------------------------------

デフォルトでは off の CSRF 保護のフィルタを有効にします。

--- a/app/Config/Filters.php
+++ b/app/Config/Filters.php
@@ -16,7 +16,7 @@ class Filters extends BaseConfig
public $globals = [
'before' => [
//'honeypot'
-                   // 'csrf',
+                  'csrf',
                ],
                'after'  => [
                        'toolbar',

ひとまず、これくらいでしょうか。

この記事は CodeIgniter Advent Calendar 2020 - Qiita の6日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

参考

Tags: codeigniter, codeigniter4