ネビ活 | ネットビジネス生活

ネットxお金のスキルを作り、未来永劫豊かに暮らす事を目指すサイト

Laravelのif文2種類の使い方を初心者もよく分かる実例で解説!

投稿日:

PHPでifを使う方法を1度学んだ事はあるけど、今ひとつ実際にどう使うのか分かってないんだ。あとLaravelだと書き方が違うとも聞いた。その辺を詳しく教えて欲しい。

 

Laravelには

  • Controllerなどで使う通常のPHPのif文
  • blade専用の@を使ったif文

の2種類があります。

 

ifは、Laravelに限らず、プログラミングのどの言語でも一番使う基礎中の基礎です。

if文は「TOPページでは「ようこそ」と表示したいけど、他のページでは表示したくない」のような条件分岐を付けて、自動的に動かす機能です。

 

これを使いこなせると、一気にプログラミング自体ができるようになります。
この記事ではLaravelで使うif文2種を実例で1から分かりやすく教えていきます。

if文を理解する事で、Laravelで自分が作りたい機能をどんどん自力で作れるようになりますし、今後他の言語を身につける時も一気に分かるようになりますよ。

 

Laravelって稼げるの?独学?スクール?高給を稼ぐためにどうするべきか教えます。

Laravel(PHP)での通常のPHPのif文の使い方

まずは通常のif文の使い方を覚えましょう。

これはLaravelに限らず、PHP共通の書き方です。
Laravelでは主にコントローラー上でこの通常のif文を使います。

LaravelのController.phpとは?初心者向けに図と例でやさしく解説

 

まず、ifの基本的な書き方なんですが、

if(  ){  }

こういう形状になってます。

最初の()には、「もし~なら」っていう条件を書いて、{}には、「〇〇する」っていう命令を書きます。

if( もし~なら ) { それがTRUEなら〇〇する }

これが基本的な書き方です。

 

TRUEってどういう事?
「正しい、その通りである」って意味なんだ。基本的にif文ってTrue(正)False(誤)で判断してるんだ。この後の実例でくわしく解説していくね。
Neby

これだけ聞いても、じゃあ、実際どこでどう使うの?ってイメージが湧かないですよね。なので、実例で解説していきます。

 

if文をController上で使う実例

では、あなたが実戦で使えるように、実例でifの使い方を解説していきます。

 

まず、あなたが何かサイトに新しい機能を付けたいと思ったら、
それをif文で作れないだろうかと考えます。

例えば、口コミサイトにこういう投稿フォームを作ったとします。

 

この時、「もしタイトル欄、本文欄、両方とも何も入力してない状態で投稿ボタンを押したら、その時は元のページにリダイレクトしたいな」と考えたとします。

そうしないと、空のデータがそのまま投稿されてしまうからです。
そこでコントローラーにif文を書いて、それを実現できないかと考えて書いてみます。

if(!$request->title && !$request->main){

       return redirect( '/create' )->with('status','↓ なんか書いてね');

}

突然すんげぇ難しいの出てきたぞ!って感じたと思いますが、中身の仕組みさえ分かってしまえば、あなたもスラスラ書けるようになります。

まず、条件(もし~なら)部分、
if( !$request->title && !$request->main )

  • $request->titleがタイトルの空欄に入力された文字、
  • $request->mainが本文欄に入力された文字です。
  •  ! は「False(ではない)」って意味があり、
  • &&は「かつ」って意味があります。

つまり、「タイトルがFalseかつ、本文がFalseなら」って書いてあります。False(正しくない、誤っている)つまり「(本来あるはずの)タイトルがない状態かつ、本文がない状態」とこの場合は捉えられます。

 

次の{}内の return redirect( '/create' )->with('status','↓ なんか書いてね');

「タイトルも本文もどっちもない状態が」Trueなら(その通りなら)、「/createにリダイレクトしてください」という意味です。投稿ページであるabc.com/createページに戻るって事です。

で、後ろの->withの部分は、メッセージも一緒に送るという事です。つまり、リダイレクトした時に、投稿ページに「↓ なんか書いてね」と表示させるという意味だと思ってください。

 

実際にコントローラーに書く場合の説明ですが、

public function xxxx(){  } の中に普通にif( ){ }で書けば動きます。上の例だと、「もし空欄だった時はリダイレクトしてね」の条件に引っかからなかったもの、つまりちゃんとフォームに記入された投稿はデータベースに保存されるようになってます。

これが基本のif文です。

ねぇ、その!とか&&とか、いろんな記号が出てくるじゃん?そういう特殊記号やいろんな命令文がいっぱいあるわけでしょ?それ全部覚えられないんだけど・・

自分もそんなに沢山PHPの命令文を覚えてるわけじゃないんだ。毎回ググるんだよ。こういう時はどんな命令文を使えばいいかなとか、「かつ」ってどの記号使うんだっけとか。

何度もif文を作ってるうちに!とか&&みたいなよく使う奴はだんだん覚えてくるから、心配いらないよ。今回も中身は覚えなくていいよ。大事なのは、if( ){ }でどんな事ができるかなっていうのを理解する事だよ。

Neby

 

PHPのif文のelseifとelse

さらにこのif文に条件を加えたい時は、elseif や else を使います。

例えば、今の投稿フォームに
タイトルは入力されたけど、本文が空欄で投稿ボタンを押された場合は、
タイトルをそのまま本文にもコピーしたいなと思ったとします。

こんなふうに↓

もしくは、本文だけ入力された場合も、タイトルにコピーしたいと思ったとしましょう。

 

この場合の条件分岐は

  1. 両方空欄なら、リダイレクトバックする
  2. タイトルだけ記入されてたなら、本文にもコピーして保存する
  3. 本文だけ記入されたなら、タイトルにもコピーして保存する
  4. 両方記入されたなら保存する。

っていう分岐を作ればいいわけです。

こういう複数のifが出てくる場合は、elseifやelseを使います。

まずelseやelseifの基本的な書き方ですが、

if( ){ }elseif( ){ }else{ }
if( もし~なら ) {

 それがTRUEなら〇〇する

}elseif( もしくは~なら ){

 それがTRUEなら〇〇する

}else{

 その他の場合は〇〇する

}

こういう書き方になります。

実際にコントローラーに書いた例です。(中身は分からなくて良いので、ifとelseif, elseをどう使ってるかに注目してください。)

 

こういう状態です↓

if( もし両方False ) {

 それがTrueなら、リダイレクトする

}elseif( もしくはタイトルがFalse ){

 それがTrueなら、本文からHTMLタグを取り除いて、30文字切り抜いて、タイトルに代入して保存する

}elseif( もしくは本文がFalse ){

 それがTrueならタイトルを本文に代入して保存する

}else{

 その他(つまり両方とも記入されてるなら)そのまま保存する

}

これをもっと分かりやすい日本語にするなら、

if( もし両方無い ) {

 その通りなら、リダイレクトする

}elseif( もしくはタイトルが無い ){

 その通りなら、本文からHTMLタグを取り除いて、30文字切り抜いて、タイトルに代入して保存する

}elseif( もしくは本文が無い ){

 その通りなら、タイトルを本文に代入して保存する

}else{

 その他(つまり両方とも記入されてるなら)そのまま保存する

}

なんで、TRUEとFALSEっていうややこしい言葉で説明するの?最初から日本語で説明してくれた方が分かりやすいんだけど。

日本語の「〇〇なら〇〇する」だけで自分が覚えた時、途中で分からなくなった事があるから、わざとTrue,Falseで教えてるんだ。

例えば、!request->title を日本語で直訳した場合、「タイトルではない」という訳になる。でも「タイトルではない」だと、「タイトル以外、例えば本文があればOK」みたいな誤解をしやすい。実際は「タイトルがFalse(正しくない)」という意味なのに。

コンピューターって基本、TrueかFalseかで判断してるから、True or Falseで考える事がプログラミング上達にはすごく重要なんだ。

Neby

あとこれ、順番を間違うとうまく行かないんだ。上から必ず順番に処理されていくから、例えば、先に if(!request->title)「タイトルがFalseなら」ってやっちゃうと、両方空欄の時もタイトルは空欄だから当てはまっちゃう。すると間違った処理がされちゃうんだ。

ifに当てはまらなかった場合で「もしくは」を使いたい時はelseif。ifに当てはまらなかった場合の全部を指定したいなら、elseを使うんだ。

Neby

 

ちなみに、今作ったコードですが、3回も「データベースに保存」という同じコードを書いてます。しかしこれ、書き方を変えればもうちょっと短いコードにする事もできます↓

両方空っぽの時とelseで分けてしまい、elseの中にもし「タイトルだけ空なら」「本文だけ空なら」っていうif文を書く事で、いずれにせよ、最後のデータベースに保存が実行されるようになってます。

こうやって繰り返し書く事を少なくする事で、より軽快に動くサイトを作れるようになります。

 

LaravelのBladeでのif文の書き方

LaravelではBlade専用のif文の書き方があります。というのも、Bladeでは普通のPHPを書かないで、Blade専用のコード(ディレクティブ)を使います。

Laravelのblade.phpとは?普通のPHPは使える?初心者もよく分かる図と例で解説!

 

先程までは、

if ( ) { }

でしたが、bladeでは

@if ( )

@endif

と書きます。

 

if ( もし~なら ) {

  それがTRUEなら〇〇する

}

@if ( もし~なら )

  それがTRUEなら〇〇する

@endif

波括弧がなくなって、代わりに@ifと@endifでサンドイッチする形になってます。

 

実際にif文をbladeで使ってみよう!

では、またサイトを例に解説していきます。

例えば、「Topページでは、サイト名を<title>タグにしたい。でもその他のページでは投稿タイトルを<title>タグにしたい」とします。

↑TOPだとサイト名が<title>として表示される

↓投稿ページだと、投稿タイトルが<title>として表示される

 

このタイトルというのは、HTMLの<title></title>タグの内容が表示されてます。

  • topなら/ask
  • 投稿ページが/ask/123

のようになっているので、後ろに番号がくっつくか、くっつかないかで分岐を作れそうですね。

で、今回はHTML内のタグをPHPで操作したいので、blade.phpファイルに書いていきます。

まず、仮として、こんなふうに作ってみます。

@if (TOPページなら)

  <title>Japaslang Ask</title>

@else

  <title>{{$val->title}}</title>

@endif

ifの条件がTRUEなら「Japaslang Ask」と表示

else(その他)なら、コントローラーから渡された投稿titleを表示

 

そう今回、elseやelseifを使う場合は、

@if(条件1なら)

 こうしてください。

@elseif(条件2なら)

 こうしてください

@else

 その他はこうしてください

@endif

こういう書き方になります。

で、「このトップページとそうでない時を分けるのに丁度いいPHP命令文はないかな?」とググって、

こうなりました。\Request::is というのが、呼び出されてるURLの事で、つまりURLが/askと完全一致の時は、Japaslang Askと表示。そうでない時、つまり/ask/123のように、完全一致ではない時は、投稿タイトルを表示というふうに設定し、動くようになりました。

むしろ、通常のif文より、@Ifの方がシンプルで分かりやすいと思わないかい?見比べてみて欲しい。
Neby

確かに<?php?>のタグやechoなんかを書かなくていい文、迷わず書けていいね。
コントローラーでは、別にHTMLと混ぜて書くわけじゃないから、普通のPHP文を使うけど、HTMLと混ぜて書かなきゃいけないブレードに関してはこういった簡略化されたPHPが使えるようになってるんだ。
Neby

 

このように、if文は、サイトのページ別に違う表示をさせたい場合や、フォームの入力の有無、チェックボックスがONの時だけメールを送り、OFFの時は送らないなど、あらゆる条件分岐を作る事ができるプログラミングの要です。

自分でも実際にサイトを作りながら、ifでそれを達成できないかを常に考えて実戦してみてくださいね。それだけでどんどん実力が付いていきますよ。

 

Bladeの中で普通のif文やPHPは使えるのか?

blade.phpの中で普通のPHP if文を無理に使う理由はないですが、
blade専用PHPだけでは対応できない事もあります。

そんな時はbladeに<?php?>タグを使えば、普通のPHPも問題なく使えます。

もしくは、@php ~ @endphpと書いて使う事も可能です。

 

ところで、あなたがLaravelを学んでる理由ってなんですか?

稼げるって聞いたから?

どれくらい上達すれば稼げるのか?本当にそんな高給を稼げるのかの現実を知ってますか?

詳しくは下の記事に本音の裏事情を書いてるので参考にしてくださいね。

Laravelって稼げるの?独学?スクール?高給を稼ぐためにどうするべきか教えます。

 

  • この記事を書いた人

Neby

本を毎日多読しつつ、資産運用、プログラミング、心理学、ネットビジネススキルを猛向上中。貧富の差が広がる5年後、10年後に安心生活を送るためのお金のリテラシー、スキル、資産を一緒に作っていきましょう。

-PHP Laravel入門

Copyright© ネビ活 | ネットビジネス生活 , 2020 All Rights Reserved.