Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kenjis/ci4-tettei-apps

『CodeIgniter徹底入門』のサンプルアプリケーション (CodeIgniter v4.x版)
https://github.com/kenjis/ci4-tettei-apps

codeception codeigniter codeigniter4 hacktoberfest phpunit selenium twig

Last synced: 21 days ago
JSON representation

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

Awesome Lists containing this project

README

        

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

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

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

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

リファクタリング前のコードは、[v4.0.0](https://github.com/kenjis/ci4-tettei-apps/releases/tag/v4.0.0) を参照してください。

Screenshot: HomeScreenshot: Form
Screenshot: BBSScreenshot: Shop

## 動作確認環境

### アプリ

- CodeIgniter 4.4.5 ([ci4-app-template](https://github.com/kenjis/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のパッケージ

- CodeIgniter 3 to 4 Upgrade Helper
- Ray.Di
- CodeIgniter4 Attribute Routes
- PHPUnit Helper

## インストール方法

### ダウンロード

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による受入テスト

より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を右クリックして開いてください。

参考: https://github.com/mozilla/geckodriver/issues/1629#issuecomment-650432816

## ライセンス

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

## 謝辞

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

## 『CodeIgniter徹底入門』について

- [『CodeIgniter徹底入門』のサンプルアプリケーションをCodeIgniter 3.xにアップデート](https://github.com/kenjis/codeigniter-tettei-apps)
- [『CodeIgniter徹底入門』情報ページ](http://codeigniter.jp/tettei/)
- [『CodeIgniter徹底入門』に対するノート](https://github.com/codeigniter-jp/codeigniter-tettei-note)