Day 0・Laravelを読むための最低限PHP
PHPの基本 — どこで動く?変数と型と出力
PHPがサーバー側で動く言語であること、変数($name)、基本の型、echoでの出力、文字列の連結と埋め込みを理解する。
PHPは「サーバー側」で動く言語
まずは肩の力を抜いてください。ここはLaravelを読むための準備運動です。PHPは、Webサーバーの中で動いて「HTMLなどの文字列を作って返す」ための言語です。ブラウザ(あなたのPC)で動くJavaScriptと違い、PHPはサーバー側で処理を終え、その結果だけがブラウザに届きます。つまりブラウザの画面を右クリックして「ソースを表示」しても、PHPのコードそのものは見えません。見えるのはPHPが生成し終えたHTMLだけです。
PHPのコードは「ここからPHPですよ」という合図の「<?php」というタグの後ろに書きます。1つのファイルの中でHTMLとPHPを混ぜることもできますが、Laravelのクラスファイルは中身がほぼPHPだけなので、先頭に「<?php」が1行あるのが普通です。命令の区切りは文末のセミコロン「;」で表します。
<?php
// 「//」で始まる行はコメント(実行されないメモ書き)です。
echo "こんにちは"; // echo は「画面に出力する」命令。文末は必ずセミコロン;なぜ文末に「;」が要るのか
PHPは1つの命令の区切りをセミコロン「;」で判断します。日本語の句点「。」のようなものです。これが無いと「命令がどこで終わったか」が分からず、エラーになります。初心者が最初に一番よく出すエラーがこの付け忘れなので、まずここを覚えておくと安心です。
変数は「$」から始まる
変数とは「値を入れておく名前付きの箱」です。PHPでは変数の名前は必ず「$」で始めます。たとえば「$name」は「nameという名前の箱」という意味です。Laravelのコードには「$user」「$request」など「$」付きの言葉が大量に出てきますが、これは全部「変数=何かが入っている箱」だと思ってください。
<?php
$name = "田中"; // 文字列(string):文字の並び。ダブルクォートかシングルクォートで囲む
$age = 30; // 整数(int):小数点のない数
$rate = 1.08; // 浮動小数点数(float):小数を含む数
$isAdmin = true; // 真偽値(bool):true(真)か false(偽)の2択
$note = null; // null:「値が何も無い」ことを表す特別な値
echo $name; // → 田中文字列の連結「.」と、変数の埋め込み
PHPでは、文字列と文字列をつなげるのにプラス「+」ではなく、ドット「.」を使います。ここはJavaScriptなど他の言語と違うので、最初につまずきやすいポイントです。また、ダブルクォート「"」で囲んだ文字列の中では、変数をそのまま書くと中身に置き換わります(これを「変数の埋め込み」と呼びます)。
連結のつもりで + を使う(PHPでは間違い)
<?php
$name = "田中";
// PHPで文字列を + でつなごうとすると意図通りにならない
echo "こんにちは " + $name; // PHP 8ではTypeErrorで停止(PHP 7以前は0などの意図しない値)「.」で連結、または "" 内に埋め込む(正しい)
<?php
$name = "田中";
echo "こんにちは " . $name . " さん"; // ドットで連結
echo "こんにちは $name さん"; // "" 内は変数がそのまま展開されるシングルクォートでは埋め込まれない
変数が中身に置き換わるのはダブルクォート「"」の中だけです。シングルクォート「'」で囲むと、'こんにちは $name' は文字どおり「$name」という文字として出力されます。「変数を展開したいならダブルクォート」と覚えてください。なお、コメント行の「//」もあわせて押さえておくと、以降のコード例が読みやすくなります。
Laravelではこう出てくる
Laravelのコントローラでは、下のように「$request から受け取った値を変数に入れて、"" の中に埋め込む」書き方が日常的に出てきます。今日学んだ「$変数」と「文字列の埋め込み」がそのまま使われています。
<?php
// Laravelのコントローラの一部(雰囲気をつかむための断片)
public function greet(Request $request)
{
$name = $request->input("name"); // 送られてきた名前を変数に入れる
return "ようこそ $name さん"; // "" 内に変数を埋め込んで返す
}読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
PHPで2つの文字列をつなげる(連結する)ときに使う記号はどれか。
「$name = "田中";」のとき、echo で「こんにちは 田中」と出力されるのはどれか。
PHPが「サーバーサイドで動く」とはどういう意味か、未経験の人にも分かるように説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。