Skip to content

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

License

Notifications You must be signed in to change notification settings

kenjis/ci4-tettei-apps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

31786c7 · Feb 19, 2024
Feb 19, 2024
Feb 19, 2024
Feb 17, 2021
Feb 19, 2024
Oct 4, 2022
Feb 16, 2021
Dec 28, 2020
Sep 30, 2021
Feb 12, 2021
Feb 19, 2024
Feb 13, 2021
Dec 28, 2020
Feb 16, 2021
Feb 19, 2024
Feb 19, 2024
Feb 12, 2023
Jan 15, 2022
Jan 17, 2021
Jan 25, 2022
Mar 23, 2021
Mar 7, 2021
Mar 7, 2021
Mar 8, 2021
Feb 19, 2024

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徹底入門』について