背景
- インストールはできたもののアプリケーションを作るためにどのようなファイル配置になっているか
- テストコードを含め、どこに何を書けばいいのか
などの理解が必要そう
ディレクトリ構造
前記事で
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 ディレクトリ構造
| ディレクトリ名 | 役割 |
|---|---|
| app | アプリケーションのコアコード置き場 |
| bootstrap | アプリケーションの初期処理を行うファイル、及びキャッシュ置き場 |
| config | アプリケーションに関する設定ファイル置き場 |
| database | DB操作に関するファイル置き場 (例:マイグレーション、初期値設定ファイルなど) |
| public | index.phpやjs,css,画像など公開用のファイル置き場 |
| resources | ビュー、コンパイル前のLESS、SASS、JavaScript、言語ファイル置き場 |
| routes | ブラウザやAPIなどによるアクセスに対してのルートを設定するファイル置き場 |
| storage | フレームワークにより生成されるファイル (例:コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュ) 置き場 |
| tests | 自動テスト置き場 |
| vendor | Composerによる依存パッケージ置き場 |
.env
環境設定ファイル。
DBやAWS関連の情報等の接続情報を記載する。
※外部に漏れると完全にアウトなので、このファイルは必ずバージョン管理の対象外にする
artisan
Laravel専用のコマンドで、LaravelのControllerやModelのひな形の作成、マイグレーションの実行、サーバーの起動などいろいろやってくれる
試しに、、、
Laravelインストール後、
php artisan serve
をしてhttp://localhost:8000 にアクセス後表示される初期画面のビューファイルを探して編集を試みる。
まずはブラウザでのアクセス時のルートをチェックするために、
routesディレクトリ内にあるweb.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をのぞいてみる。
<!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」に書き換えると、

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