LLaravel Bootcamp

Day 0Laravelを読むための最低限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
<?php

// 「//」で始まる行はコメント(実行されないメモ書き)です。
echo "こんにちは"; // echo は「画面に出力する」命令。文末は必ずセミコロン;
最小のPHP。<?php で始まり、echo で文字列を出力する。

なぜ文末に「;」が要るのか

PHPは1つの命令の区切りをセミコロン「;」で判断します。日本語の句点「。」のようなものです。これが無いと「命令がどこで終わったか」が分からず、エラーになります。初心者が最初に一番よく出すエラーがこの付け忘れなので、まずここを覚えておくと安心です。

変数は「$」から始まる

変数とは「値を入れておく名前付きの箱」です。PHPでは変数の名前は必ず「$」で始めます。たとえば「$name」は「nameという名前の箱」という意味です。Laravelのコードには「$user」「$request」など「$」付きの言葉が大量に出てきますが、これは全部「変数=何かが入っている箱」だと思ってください。

PHP
<?php

$name = "田中";   // 文字列(string):文字の並び。ダブルクォートかシングルクォートで囲む
$age  = 30;        // 整数(int):小数点のない数
$rate = 1.08;      // 浮動小数点数(float):小数を含む数
$isAdmin = true;   // 真偽値(bool):true(真)か false(偽)の2択
$note = null;      // null:「値が何も無い」ことを表す特別な値

echo $name; // → 田中
変数への代入(=)と、PHPの基本の型。「=」は「等しい」ではなく「右の値を左の箱に入れる」の意味。

文字列の連結「.」と、変数の埋め込み

PHPでは、文字列と文字列をつなげるのにプラス「+」ではなく、ドット「.」を使います。ここはJavaScriptなど他の言語と違うので、最初につまずきやすいポイントです。また、ダブルクォート「"」で囲んだ文字列の中では、変数をそのまま書くと中身に置き換わります(これを「変数の埋め込み」と呼びます)。

連結のつもりで + を使う(PHPでは間違い)

PHP
<?php
$name = "田中";
// PHPで文字列を + でつなごうとすると意図通りにならない
echo "こんにちは " + $name; // PHP 8ではTypeErrorで停止(PHP 7以前は0などの意図しない値)

「.」で連結、または "" 内に埋め込む(正しい)

PHP
<?php
$name = "田中";
echo "こんにちは " . $name . " さん"; // ドットで連結
echo "こんにちは $name さん";          // "" 内は変数がそのまま展開される

シングルクォートでは埋め込まれない

変数が中身に置き換わるのはダブルクォート「"」の中だけです。シングルクォート「'」で囲むと、'こんにちは $name' は文字どおり「$name」という文字として出力されます。「変数を展開したいならダブルクォート」と覚えてください。なお、コメント行の「//」もあわせて押さえておくと、以降のコード例が読みやすくなります。

Laravelではこう出てくる

Laravelのコントローラでは、下のように「$request から受け取った値を変数に入れて、"" の中に埋め込む」書き方が日常的に出てきます。今日学んだ「$変数」と「文字列の埋め込み」がそのまま使われています。

PHP
<?php

// Laravelのコントローラの一部(雰囲気をつかむための断片)
public function greet(Request $request)
{
    $name = $request->input("name"); // 送られてきた名前を変数に入れる
    return "ようこそ $name さん";       // "" 内に変数を埋め込んで返す
}
「$変数」「""内の埋め込み」がLaravelでもそのまま使われている例(-> の意味はレッスン4で学ぶ)。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

PHPで2つの文字列をつなげる(連結する)ときに使う記号はどれか。

Q2

「$name = "田中";」のとき、echo で「こんにちは 田中」と出力されるのはどれか。

Q3

PHPが「サーバーサイドで動く」とはどういう意味か、未経験の人にも分かるように説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。