Laravel初心者がLaravelでテストコードを書くまでの勉強メモ（ディレクトリ構造の確認）

## 背景

* [インストールはできた](https://qiita.com/shimomai@github/items/35c4d52a38ff6a0399b0#laravel%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)もののアプリケーションを作るためにどのようなファイル配置になっているか
* テストコードを含め、どこに何を書けばいいのか
<br>などの理解が必要そう

## ディレクトリ構造

前記事で

```
composer create-project --prefer-dist laravel/laravel hoge
```
を実行してできたhogeというディレクトリを除くと以下のようになっていた。
(laravel v5.8.17)

```
.editorconfig
.env
.env.example
.gitattributes
.gitignore
.styleci.yml
app
artisan
bootstrap
composer.json
composer.lock
config
database
package.json
phpunit.xml
public
readme.md
resources
routes
server.php
storage
tests
vendor
webpack.mix.js
```

上記のうち、

* app
* bootstrap
* config
* database
* public
* resources
* routes
* storage
* tests
* vendor

がディレクトリで、その他設定ファイルやスクリプト、READMEで構成されている。
各ディレクトリの(ざっくりの)役割は以下の通り。
参考：[Laravel 5.8 ディレクトリ構造](https://readouble.com/laravel/5.8/ja/structure.html)

|ディレクトリ名|役割|
|:-----------:|:------------|
|app|アプリケーションのコアコード置き場|
|bootstrap|アプリケーションの初期処理を行うファイル、及びキャッシュ置き場|
|config|アプリケーションに関する設定ファイル置き場|
|database|DB操作に関するファイル置き場<br/>(例：マイグレーション、初期値設定ファイルなど）|
|public|index.phpやjs,css,画像など公開用のファイル置き場|
|resources|ビュー、コンパイル前のLESS、SASS、JavaScript、言語ファイル置き場|
|routes|ブラウザやAPIなどによるアクセスに対してのルートを設定するファイル置き場|
|storage|フレームワークにより生成されるファイル<br/>(例：コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュ)<br/>置き場|
|tests|自動テスト置き場|
|vendor|Composerによる依存パッケージ置き場|

### .env

環境設定ファイル。
DBやAWS関連の情報等の接続情報を記載する。
※外部に漏れると完全にアウトなので、このファイルは必ずバージョン管理の対象外にする

### artisan

Laravel専用のコマンドで、LaravelのControllerやModelのひな形の作成、マイグレーションの実行、サーバーの起動などいろいろやってくれる

## 試しに、、、

Laravelインストール後、

```
php artisan serve
```

をしてhttp://localhost:8000 にアクセス後表示される初期画面のビューファイルを探して編集を試みる。

まずはブラウザでのアクセス時のルートをチェックするために、
routesディレクトリ内にあるweb.phpをのぞいてみる。

```php

<?php
Route::get('/', function () {
    return view('welcome');
});
```

なるほど、welcomeというviewを見ればいいらしいので、
resources/viewsディレクトリ内を見てみるとwelcome.blade.phpというのを発見。
（「welcome.blade.php？welcome.phpじゃないのか、、、」となったので調べてみた。
Laravelではbladeというテンプレートエンジンを使って、ビューファイルからHTMLを生成している。そのため.blade.phpという拡張子になっているとのこと。）

welcome.blade.phpをのぞいてみる。

```html

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
・
・
・
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    @auth
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ route('login') }}">Login</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}">Register</a>
                        @endif
                    @endauth
                </div>
            @endif

            <div class="content">
                <div class="title m-b-md">
                    Laravel
                </div>

                <div class="links">
                    <a href="https://laravel.com/docs">Docs</a>
                    <a href="https://laracasts.com">Laracasts</a>
                    <a href="https://laravel-news.com">News</a>
                    <a href="https://blog.laravel.com">Blog</a>
                    <a href="https://nova.laravel.com">Nova</a>
                    <a href="https://forge.laravel.com">Forge</a>
                    <a href="https://github.com/laravel/laravel">GitHub</a>
                </div>
            </div>
        </div>
    </body>
</html>
```

おー、あったあった、試しに「Laravel」を「hoge」に書き換えると、
![hoge.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19908/4c32c8ca-45b0-c503-460c-3edfdec9fdd0.jpeg)
＼(変わった！)／

testsディレクトリに自作の自動テストをぶちこむ未来のために、
環境設定等の準備などについて学習し、次記事にまとめる。