バージョンを決める。

基本PHPに合わせるが、PHP7以上でないとな感じ(Laravel5.5以上で使いたい)
PHP7.0だと最新は使えないが、現在最終のLTS(Long-term Support)の5.5が使えるのでそこを使う。

希望としてPHP7.1以上で最新を使っていきたい気もする。

PHP7.0 > 7.2であまり大きな変化は無いようだけど、HTMLメール作成でエラーがでて使えないことがあった(原因がプログラムなのかフレームワークなのかは調べてない)

Laravelのインストール

composerでサクッと対象バージョン入れる

デプロイ/サーバー環境セットアップ

  • ステージング/プロダクションのデプロイ設定(いつもはrsync)
  • パーミッションも
//グループの場合によって 770とか
$ chmod -R 777 ./storage
$ chmod -R 777 ./bootstrap/cache
  • .envの設定(ローカル/リモート)
    APP_NAMEとか、APP_ENVとか、DBの設定とか

  • config/app.php設定

//日本化
    'timezone' => 'Asia/Tokyo',
    'locale' => 'ja',
    'fallback_locale' => 'ja',
//ログ設定(config/app.php) ログをdailyに
    'log' => env('APP_LOG', 'daily'),
    'log_level' => env('APP_LOG_LEVEL', 'debug'),
    'log_max_files' => '90',
    
  • app/Providers/AppServiceProvider.php
//Slackへ流すエラーログなど
    public function boot()
    {
        //ログ設定 
        $token = env('SLACK_API_KEY');
        $channel = env('SLACK_API_CHANNEL');
        //Error以上はSlackに流す
        Log::listen(function ($event) use ($token) {
            $monolog = Log::getMonolog();
            $handlers = $monolog->getHandlers();
            $slackHandler = new SlackHandler(
                $token,
                $channel,
                env('APP_NAME'),
                'log',
                false,
                Logger::ERROR,
                false,
                true,
                true);
            array_push($handlers,$slackHandler);
            $monolog->setHandlers($handlers);
        });
    }
    
  • 一旦設定が終わったら簡単に動作するかを見る。

リポジトリ設定

リモートを置く/またはローカルのみ

モデル関連

artisanでモデル/コントローラーをすべて作成。

$ php artisan make:model  Client  -r --controller

カスタムバリデーション

カスタムバリデーションを準備

パッケージ類

//インストール
$ composer require "laravelcollective/html":"^5.5.0" // 今回はlaravel5.5に合わせて5.5.0を指定
$ composer require monolog/monolog
$ composer require spatie/laravel-backup
$ composer require intervention/image
// config/app.phpに追記
    //providers
        Intervention\Image\ImageServiceProvider::class,
        Collective\Html\HtmlServiceProvider::class,
        Spatie\Backup\BackupServiceProvider::class,
    //alias
        'Image' => Intervention\Image\Facades\Image::class,  
        'Form' => Collective\Html\FormFacade::class,
        'Html' => Collective\Html\HtmlFacade::class,
バックアップの設定

//バックアップ設定ファイルを生成
$ php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
→コピーしてと言われるのコピー
$ cp ./vendor/spatie/laravel-backup/config/backup.php ./config/backup.php 

// バックアップ設定ファイル(config/backup.php)を編集→こちらは必要に応じて
'to' => env('MAIL_SYSTEM_ADMIN') とか。

//バックアップのテスト
$ php artisan backup:run --only-db  //DBのみ
→storage/app/Ryunavi/に保存される。
→通知メール設定していたら送信される(.envのメールの設定をたまに忘れる)

ミドルウェア関連

//ミドルウェア作成
$ php artisan make:middleware MyApp
// app/Http/Kernal.phpに追加
    protected $routeMiddleware = [
        'myapp' => \App\Http\Middleware\MyApp::class,
    ];

Auth関連

たとえば user,admin,clientがある場合。

//config/auth.phpに追記、guardsとproviders
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    
        'user' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'client' => [
            'driver' => 'session',
            'provider' => 'clients',
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
    ],
------------------------    
   'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'clients' => [
            'driver' => 'eloquent',
            'model' => App\Client::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],    

Helper設定

独自ヘルパ関数などをまとめたファイル読み込み

//composer.jsonのautoloadにfiles追記読み込むファイルHelper.phpを追加して
"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Helper.php"
        ]
    },

//autoloadをダンプ →読み込まれるようになる
$ composer dumpautoload


//app/Helper.phpに独自ヘルパ関数などを定義していく。
if (!function_exists('mb_trim')) {
    function mb_trim($str)
    {
        return trim(mb_convert_kana($str, "s"));
    }
}
if (!function_exists('h')) {
    function h($str)
    {
        return htmlspecialchars($str, ENT_COMPAT);
    }
}
if (!function_exists('h_attr')) {
    function h_attr($str)
    {
        return htmlspecialchars($str, ENT_QUOTES);
    }
}



Route設定

prefixなど設定