PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Laravel】RedirectResponseの主なメソッド

入力データを付加する

フォームの送信などの際にリダイレクトを行う場合、 送られてきた値をそのまま付加してリダイレクトします。

$response->withInput()

バリデータのエラーを付加する

エラーメッセージを付加してリダイレクトする。 引数にはMessageProviderというインターフェースを用意。 具体的な実装例としては illuminate\Contracts\ValidationのValidatorクラスがあります。

$response->withErrors(<<MessageProvider>>)

クッキーを付加する

複数のcookieCookieデータを付加してリダイレクトする。 引数にはCookieインスタンスをまとめた配列を用意。

$response->withCookie(Cookie配列)

【PHP】アロー演算子(->) とダブルアロー演算子(=>)ってなに?

PHPを書くさいに頻出する
2つの記号にはおおきな違いがります。
頻繁に出てくるこの演算子
初学者なりにアウトプットしていきます。

そもそもの「アロー」とは

アロー、アロウ、arrow - 矢、矢印を指す英語。
見たまんまですね。

( ̄ー ̄)o∫ シュッ  ->   ->         -> ->            ->
  ( ̄ー ̄)o∫ シュッ   ->         ->              ->          ->

アロー演算子(->)

クラスからオブジェクトを取り出すための演算子です。

//※イメージ

class guitar {
  $player1 = "Pat Metheny";
  $player2 = "John Cage";
  $player3 = "Eric Clapton";
}

guitar -> $player1;
//Pat Metheny

ダブルアロー演算子(=>)

配列のキーに値を代入するための演算子です。

//※イメージ
 
$bass = array("AnthonyJackson"=>"fodera" ,"MarcusMiller"=>"Fender","MichaelManring"=>"Zon");
$var = $bass[MarcusMiller]
echo $var
//Fender

【Laravel】ミドルウェアの登録

ミドルウェア登録

自身が新たに設定したミドルウェアの利用するには
「app/Http/kerner.php」(HTTPカーネル)で登録が必要になります。

グローバルミドルウェア

あるミドルウェアをアプリケーションの
全HTTPリクエストで実行したい場合は、
app/Http/Kernel.phpクラスの
$middlewareプロパティへ追加します。

 protected $middleware = [
      \App\Http\Middleware\TrustProxies::class,
      \App\Http\Middleware\CheckForMaintenanceMode::class,
     ・・・・・・・・・・略・・・・・・・・・・・・
     下部に追記
];

ミドルウェアをルートへ登録

特定のルートのみに対しミドルウェアを指定したい場合は、
先ずapp/Http/Kernel.phpファイルでミドルウェアの短縮キーを登録します。
$routeMiddlewareプロパティへ追加します。

    protected $routeMiddleware = [
          'auth' => \App\Http\Middleware\Authenticate::class,
          'auth.basic' => \Illuminate\Auth\Middleware\Authenti....
           ・・・・・・・・・・略・・・・・・・・・・・・
           下部に追記
    ];

app/Http/Kernel.phpファイルで定義し終えたら
ルートに対しミドルウェアを指定する、
middlewareメソッドを使ってください。

Route::get(アドレス, 関数など)
->middleware('利用するミドルウェアクラス');

ミドルウェアグループ

複数のミドルウェアを一つのキーによりまとめ、
ルートへ指定できるようします。
$middlewareGroupsプロパティへ追加します。

protected $middlewareGroups = [
    'web' => [
   ・・・・・・・・・・ミドルウェアクラス・・・・・・・・・・・・
     ],

   'api' => [
          ・・・・・・・・・・ミドルウェアクラス・・・・・・・・・・・・
    ],

 下部に追記

 ];

app/Http/Kernel.phpファイルで定義し終えたら
ルートに対しミドルウェアを指定する、
middlewareメソッドを使ってください。

Route::get(アドレス, 関数など)
->middleware('利用するグループ名');

【Laravel】@slotディレクティブとは

@slotとは

コンポーネント利用の際に使うディレクティブ。
{{ }}で指定された変数に値を設定するためのもの。

記述方法

@slot(コンポーネントで設定した変数名)
・・・設定する内容・・・
@endslot

@slotを使い、コンポーネントに様々な部品を用意していれば
それらを組み合わせてページをデザインできるようになる。
同じ記述を繰り返さないためにも
テンプレートは徹底して活用していきたいです。

PHPのバージョンを7.1->7.2へ更新した

Laravelのプロジェクト作成の際にバージョンアップしてくださいとアラートが出たので 7.1から7.2にバージョンあげてみることに。

 やったこと

phpを入れようとすると、だいたい以下のコマンドが見つかる

brew install homebrew/php/php72

しかしhomebrew/phpはdeprecatedになってしまったらしく、以下のエラーになってしまった。

Error: homebrew/php was deprecated. This tap is now empty as all its formulae were migrated.

非推奨になったので、違う方法で試さないといけない。
で、brew search php72で探したところ、以下のコマンドでインストールできた。

brew install php@7.2

 

DBの正規化

第一正規化

目的はレーブル内データの重複を無くす事である。
データに重複が存在しなくなるまでテーブルを分割する。
完了した状態を 第一正規形 と呼ぶ。

 第二正規化

目的はテーブル内の主キー列以外の列の値が、必ず主キーによって決まるようにすることである。
主キー以外の項目に従属して変化するような項目は、別のテーブルに分割する。

ex. ブログのカテゴリを別テーブルに切り出してつくる

完了した状態を 第二正規形 と呼ぶ。

 第三正規化

目的はテーブル内の主キー列以外の列の値が、 主キーのみ によって決まるようにすることである。

ex. 郵便番号と住所を別テーブルに分ける(住所は郵便番号に従属している)

完了した状態を 第三正規形 と呼ぶ。

ステータスコード

webページを表示させるために、webブラウザはサーバへページを表示してほしいよ!とお願い(=リクエストを送信)をします。
このお願い(リクエスト)に対して、サーバは対応する返信(レスポンスメッセージ)をすることでwebページを表示させます。

その返信の一番最初に書かれているのがステータスコードです。
そのリクエストに対し、サーバが返してくれるステータスをステータスコードといいます。
このコードを見ればどんな状態なのかがざっくりとわかるようになっています。

ステータスコード 状態
1xx Informational 100 Continue(継続)
101 Switching Protocols(プロトコル切り替え)
102 Processing (処理中)
2xx Success 200 OK(OK、リクエスト成功)
204 No Content(内容無し)
3xx Redirection 300 Multiple Choices(複数の選択)
302 Found(発見した)
4xx Client Error 400 Bad Request(リクエスト不正)
404 Not Found(未検出)
5xx Server Error 500 Internal Server Error(サーバ内部エラー)
503 Service Unavailable(サービス利用不可)
504 Gateway Timeoutゲートウェイタイムアウト