A Laravel - user000422/0 GitHub Wiki
概要
公式ドキュメント https://laravel.com/docs/11.x
Laravel バージョン https://laravelversions.com/ja
Laravel | PHP | セキュリティサポート | 備考 |
---|---|---|---|
9 | 8.0以降 | 2024/02 | サポート終了 |
10 | 8.1以降 | 2025/02 | |
11 | 8.2以降 | 2026/02 |
変数はキャメルケース $userName
Laravel標準のアーキテクチャ : https://note.com/kurogoma939/n/n6623d7002690
実行速度は遅い。
■経験者談
書くのはほとんど View
と Controller
■構成例 (きれいに作られたCRM) https://github.com/monicahq/monica (よくできてる)https://github.com/nirav-gajera/laravel-crud-using-repository (開発時によく使うコマンド一覧)https://dev.to/ericchapman/my-beloved-laravel-cheat-sheet-3l73
■Formファサード廃止について Laravel11から廃止。 そもそもLaravel4の機能だった。それを「Collective」で無理やり使用していただけ。
導入
■RHEL8
# 一般的
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
cd /var/www/html
# Laravelプロジェクト作成 ver指定記法
# カレントディレクトリにプロジェクトのディレクトリが作成される(配下にLaravelディレクトリ一式)
composer create-project "laravel/laravel=10.*" sample-app
ディレクトリ解説(どのプロジェクトでも共通)
アプリケーションを公開する場合はpublic
をドキュメントルートにすること。
ディレクトリ名 | 説明 |
---|---|
app | ★ アプリのプログラム Controller Model 開発したソースを格納 |
bootstrap | アプリ実行時に最初に行われるプログラム 基本的に変更しない |
config | 設定関連 |
database | DB関連 |
public | 外部公開用 JavaScript css 画像 ドキュメントルート |
resources | ★ コンパイル前の外部公開用 html(テンプレート) JavaScript × css 画像 |
routes | ★ ルート関連 web.php |
storage | ファイル保存 logs エラーログ |
tests | PHPUnit |
vendor | Laravelの機能 基本手動では変更しない? |
Path | 説明 |
---|---|
.env | 環境変数 |
app/Http | ★ アプリのプログラム Controllers Requests Middleware |
resources/views | ★ テンプレート |
storage/logs/laravel.log | ログ |
config/database.php | DB設定 |
config/logging.php | ログ設定 |
config/app.php | サービスプロバイダ登録 |
public/img | 表示用画像格納 |
public/css | css |
artisan command(アーティザン)
# Laravelバージョン確認
php artisan -V
# Laravel 起動
php artisan serve
php artisan serve --port=8080 # ポート指定(指定なしの場合は 8000)
# ルート(ルーティング)一覧を表示
php artisan route:list
# アプリケーションのディレクトリでコマンドを実行すること
# make:provider コントローラーを作成
php artisan make:controller SampleController
php artisan make:controller Sample/SampleController # ディレクトリ指定の場合
php artisan make:controller Sample/SampleController --api # API用コントローラー
# make:model モデルを作成
php artisan make:model SampleTable
# make:request リクエストを作成
php artisan make:request SampleRequest
# make:middleware ミドルウェアを作成
php artisan make:middleware SampleMiddleware
# make:provider サービスプロバイダを作成
php artisan make:provider SampleServiceProvider
ルーティング
ファイル | 用途 | 説明 |
---|---|---|
web.php | ブラウザ | 基本はこちら |
api.php | API | パスの先頭にapi/ が自動付与される。 |
特定のアドレスにアクセスした際にどの処理を実行するか割り当てる。
Webアプリケーションのルート定義は routes/web.php
で行う。
laravelのバージョンにより記述が異なる。(Laravel7構文 Route::get('/', 'SampleController@index'
)
// Use宣言 使用するClassのパスを設定(Laravel 8)
use App\Http\Controllers\SampleController; // useも指定しなければならない
// 基本型 : HTTPメソッド URL, [コントローラー::class, 'メソッド名']
Route::get('/sample', [SampleController::class, 'index']);
// ルートパラメータを渡す(アクションメソッドの引数をテンプレートへ渡す)
Route::get('/sample/{sample_data?}', [SampleController::class, 'index']);
// ビュールート viewのみ返す場合 第二引数のviewパスは`resources/views`以降
Route::view('/sample', 'sample');
// redirect
Route::redirect('/old-url', '/new-url');
コントローラー
artisanで作成すること。 基本的には「リクエストパラメータ取得」「サービスクラス呼び出し」「return」の3つ以外は記述しない。
リクエストはクエリーから取得 URL例)http://localhost:8000/sample?id=hoge
// サービスの呼び出し
use App\Services\SampleService;
class SampleController extends Controller
{
// 基本型
public function index(Request $request, SampleService $service)
{
// 1.HTTPリクエストの値を取得
$sample_name = $request->input('input_name'); // チェックボックスもこれでいい
$sample_file = $request->file('sample_file'); // ファイルアップロードの場合は「file」
// 2.ビジネスロジックの実行
$result = $service->sampleTasks($sample_name);
// 3.返却
return view('sample.index');
};
public function sample(Request $request)
{
// input: request値を取得。デフォルト値の設定も可能。
$sample_name = $request->input('input_name');
// all: request値を全て取得。
$sample_input = $request->all();
// redirect URL:https://sample-domain/sample
return redirect('sample');
};
// 引数に「Request $request」、「Response $response」を指定するだけでインスタンスが利用できる
public function index(Request $request, Response $response) { /* return */ };
}
viewメソッド … アクションメソッドからテンプレートを呼び出す
// 第一引数: [テンプレートフォルダパス].[テンプレートファイル名]
// テンプレートフォルダパスは「resources/views」がカレント
return view('sample.index');
// 第二引数: 連想配列
return view('sample.index', $data);
サービスクラス
一般的に App\Services
に作成する。
ビジネスロジックを扱う。コントローラーからビジネスロジックを切り離す目的。
ユーザー側から見たときの処理の内容(記事の登録、記事の更新など)を基準にServiceクラスを作成し処理を整理すると、どこに何の処理を記述すればいいかが明確で、コードも追いやすくなります。
一般的な命名CreateArticleService
作成方法: touch /var/www/html/Laravel-project/app/Services/CreateArticleService.php
<?php
namespace App\Services;
class UserService
{
public function sample()
{
//
}
}
Middleware
コントローラーを呼び出す前(後)に割り込んで処理を行う。
app/http
内に作成される。
認証済みか否か事前判定のような使い方が一般的?(要確認)
public function handle($request, Closure $next)
{
return $next($request);
}
■登録
app/Http/Kernel.php
// 個別ミドルウェア 短縮キーの設定も可
protected $routeMiddleware = [
'sample' => \App\Http\Middleware\Sample::class,
];
■Middlewareを使用するルートの指定
web.php
に設定。
// 名前空間の設定
use App\Http\Middleware\Authenticate;
// 対象のルートにメソッドチェーンで設定
Route::get('/sample', [SampleController::class, 'index'])
->middleware(Authenticate::class);
// 複数設定の場合
Route::get('/sample', [SampleController::class, 'index'])
->middleware([Authenticate::class, Second::class]);