Skip to content

q23isline/reinventing_the_wheel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reinventing the wheel

LICENSE releases CircleCI GitHub Actions codecov PHPStan Open in Visual Studio Code

PHP CakePHP MySQL NGINX

はじめにやること

  1. ソースダウンロード

    git clone 'https://github.com/q23isline/reinventing_the_wheel.git'
  2. config/.env.exampleをコピーし、config/.envとして貼り付ける

    • ファイル内のSECURITY_SALTの値は適当に書き換える
    cd reinventing_the_wheel
    cp config/.env.example config/.env
  3. config/app_local.example.phpをコピーし、config/app_local.phpとして貼り付ける

    cp config/app_local.example.php config/app_local.php
  4. DB コンテナ起動時に Permission Denied で起動できない状態にならないように権限付与する

    sudo chmod -R ugo+w logs
  5. アプリ立ち上げ

    docker compose build --no-cache
    docker compose down -v
    sudo rm -rf vendor
    docker create -it --name app reinventing_the_wheel-app bash
    sudo docker cp app:/var/www/html/vendor $(pwd)
    docker rm -f app
    sudo chown -R $(whoami):$(whoami) vendor
    docker compose up -d
    docker exec -it app bin/cake migrations migrate
    docker exec -it app bin/cake migrations seed

    ※ Mac OS で chown: {自身のユーザー名}: illegal group name エラーが発生する場合、以下のコマンドを代わりに実行する

    sudo chown -R $(whoami):staff vendor

日常的にやること

システム起動

docker compose up -d

システム終了

docker compose down

動作確認

URL

ログイン情報

Mail Address Password
[email protected] admin00

Permission Denied対策

  • ログイン後、画面にPermission Deniedエラーが表示される場合、以下を実行
    • 本番環境では適切に権限を付与すべきだがとりあえず動くようにフル権限を付与
sudo chmod -R 777 tmp
sudo chmod -R ugo+w logs

コード静的解析&ユニットテスト

docker exec -it app php composer.phar check

コーディング標準チェック単体実行

# コーディング標準チェック実行
docker exec -it app ./vendor/bin/phpcs --colors -p src/ tests/
# コーディング標準チェック自動整形実行
docker exec -it app ./vendor/bin/phpcbf --colors -p src/ tests/

静的分析チェック単体実行

docker exec -it app ./vendor/bin/phpstan analyse

ユニットテスト単体実行

# テスト実行
docker exec -it --env XDEBUG_MODE=coverage app ./vendor/bin/phpunit --colors=always
# カバレッジ生成
docker exec -it --env XDEBUG_MODE=coverage app ./vendor/bin/phpunit --coverage-html webroot/coverage

sudoモデリング

  • docs/diagrams/src配下の.xmlファイルにて定義
システム関連図
ユースケース図
ドメインモデル図
オブジェクト図

APIドキュメント

  • docs\api\src\reference以下の.yamlファイルにて定義
    • Stoplight Studioソフトに読み込ませることでメンテナンス可能
  • APIドキュメントHTML化手順
# HTML変換用ライブラリインストール(一回のみ実行)
npm install -g redoc-cli
# `yaml`ファイルをHTMLへ変換する
redoc-cli bundle xxxxxx.yaml

PostmanによるAPIの動作確認

  • Headersに以下を設定
KEY VALUE
Cookie PHPSESSID=xxxxxx; csrfToken=xxxxxx
  • 【GET以外の場合】BodyのrawにJSONで以下を設定
{
    // 画面の HTML を表示し、input タグの name が _csrfToken の value
    "_csrfToken": "xxxxxxxxx",
    // .....
}

デバッグ実行

VS Codeの初期設定

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "hostname": "0.0.0.0",
            "pathMappings": {
                "/var/www/html/": "${workspaceRoot}"
            },
            "environment": {
                // デバッグ時はログレベルを 7
                "XDEBUG_CONFIG": "log_level=7"
            }
        }
    ]
}

ディレクトリ構成

オニオンアーキテクチャ
reinventing_the_wheel
├src
│├Controller :ユーザーインターフェイス(プレゼンテーション)層[MVCのC]
││└Api
││ └{version}
││  └{functionName}Controller.php
│├Domain
││├Models :ドメインモデル層
│││└{functionName}
│││ ├Type
│││ │└{columnName}.php
│││ ├I{functionName}Repository.php :依存関係逆転の原則用
│││ ├{functionName}.php
│││ └{functionName}Collection.php
││├Services :ドメインサービス層
│││└{functionName}Service.php
││└Shared
││ └Exception
││  ├ExceptionItem.php
││  └ValidateException.php
│├Infrastructure :インフラ層
││├CakePHP :MVCのMを呼び出す
│││└{functionName}
│││ └CakePHP{functionName}Repository.php
││└InMemory :テスト用
││ └{functionName}
││  └InMemory{functionName}Repository.php
│└UseCase :アプリケーションサービス(ユースケース)層
│ └{functionName}
│  ├{functionName}{actionName}Command.php :ファサード用
│  ├{functionName}{actionName}UseCase.php
│  ├{functionName}Data.php :DTO用
│  └{functionName}{actionName}Result.php :出力整形用
└docs
 ├api :APIドキュメント
 │└src
 │ └reference
 │  └{functionName}.{version}.yaml
 └diagrams :sudoモデリングの図
  └src
   └reinventing_the_wheel.drawio.xml

About

DDDの実装パターンの実践リポジトリ

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published