Skip to content

『CodeIgniter徹底入門』のサンプルアプリケーション (CodeIgniter v4.x版)

License

Notifications You must be signed in to change notification settings

kenjis/ci4-tettei-apps

Repository files navigation

『CodeIgniter徹底入門』のサンプルアプリケーションをCodeIgniter4にアップデート

ここは『CodeIgniter徹底入門』(翔泳社)に含まれている以下のサンプルアプリケーション(CodeIgniter 1.6.1用)を CodeIgniter 3.xで動作するように更新したもの を、CodeIgniter4で動作するように更新するためのプロジェクトです(作業中)。

  • コンタクトフォーム(7章)
  • モバイル対応簡易掲示板(8章)
  • 簡易ショッピングサイト(9章)

現在、CodeIgniter 4.xで動作するための更新は完了しており、リファクタリングなどを実施中です。

リファクタリング前のコードは、v4.0.0 を参照してください。

Screenshot: HomeScreenshot: Form Screenshot: BBSScreenshot: Shop

動作確認環境

アプリ

  • CodeIgniter 4.4.5 (ci4-app-template を使用)
  • PHP 8.2.16
    • Composer 2.7.1
  • MySQL 8.0.34

受入テスト

  • selenium-server 4.17.0
  • geckodriver 0.34.0

「CodeIgniter 3.xで動作するように更新したもの」からの変更点

  • アプリケーションクラスを名前空間付きに移行
  • 自動ルーティングをオフに変更
    • ルーティング設定はコントローラのアトリビュートから設定ファイルを生成
  • 設定ファイルを設定クラスに移行
    • app/Config/ConfigShop.php
  • ページネーション
    • 仕様変更に伴い最初のページもURIセグメント数が変わらないものに変更
    • offsetベースからページ番号に移行
    • ページネーションのHTMLをテンプレートに移行
      • App\Views\Pager\default_full
  • バリデーション
    • Callableの検証ルールをクラスに移行
      • App\Libraries\Validation\CaptchaRules
    • バリデーションエラーのHTMLをテンプレートに移行
      • App\Views\Validation\list
      • App\Views\Validation\single
  • モバイル掲示板用のフックをコントローラフィルタに移行
    • App\Filters\ConvertEncoding
  • アプリケーション用の例外クラスを追加
  • テストケースクラスを名前空間付きに移行
  • 受入テスト用にacceptance環境を追加
    • app/Config/Boot/acceptance.php
  • Composerパッケージの更新
    • Twigライブラリをcodeigniter-ss-twig v4.0に更新
    • PHPUnitを9.5に更新
    • symfony/dom-crawlerを5.2に更新
    • symfony/css-selectorを5.2に更新
  • GitHub Actionsによるチェックの追加
    • コーディング標準
    • PHPUnit
    • 静的解析

追加されたComposerのパッケージ

インストール方法

ダウンロード

https://github.com/kenjis/ci4-tettei-apps/archive/develop.zip をダウンロードし解凍します。

.envファイルの作成

$ cp env .env

依存パッケージのインストール

Composerの依存パッケージをインストールします。

$ composer install

データベースとユーザーの作成

MySQLにデータベースとユーザーを作成します。

CREATE DATABASE `codeigniter` DEFAULT CHARACTER SET utf8mb4;
CREATE USER username@localhost IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON codeigniter.* TO username@localhost;

データベースマイグレーションとシーディングの実行

データベースにテーブルを作成し、テストデータを挿入します。

$ php spark migrate
$ php spark db:seed ProductSeeder

Webサーバーの起動方法

$ php spark serve

テストの実行方法

PHPUnitによるアプリケーションテスト

$ composer test

テストカバー率のレポートを生成したい場合は、以下を実行します。カバー率の集計にはXdebugが必要です。

$ composer coverage

レポートはbuild/coverageフォルダに作成されます。

Codeception/Seleniumによる受入テスト

https://www.mozilla.org/ja/firefox/new/ よりFirefoxをダウンロードしインストールします。

Homebrewからselenium-server-standaloneとgeckodriverをインストールします。

$ brew install selenium-server
$ brew install geckodriver

Seleniumサーバを起動します。

$ selenium-server standalone

受入テストを実行します。

$ sh acceptance-test.sh

Note

geckodriverが開けない場合は、一度Finderからgeckodriverを右クリックして開いてください。

参考: mozilla/geckodriver#1629 (comment)

ライセンス

サンプルアプリケーションのライセンスは「修正BSDライセンス」です。詳細は、LICENSE.md をご覧ください。

謝辞

サンプルアプリケーションのデザインは、神野みちるさん(株式会社ステップワイズ)にしていただきました。

『CodeIgniter徹底入門』について