PHPをはじめよう

PHPの最小単位を扱う。`.php`ファイルを作って実行できるところまで

PHPスクリプトの実行フロー(ファイル → インタプリタ → 出力)
PHPスクリプトの実行フロー(ファイル → インタプリタ → 出力)

PHP の最小要素 (echo / 変数 / 数値 / 入力) を扱うトピック。

このトピックで身につくこと

  • .php ファイルを作って php コマンドで実行できる
  • echo で文字を出せる
  • 変数に値を入れて取り出せる
  • 簡単な計算ができる
  • ターミナルから入力を受け取れる

前提知識の要点

このトピックは PHP 言語の知識ゼロ で始められる。必要なのは環境だけ。

# ターミナルで以下が動けば OK
$ php -v
PHP 8.x.x ...

もし php -v が動かなければ topic: first-step で環境構築する。それ以外の前提はない。

chapter 一覧

# chapter 内容
1 ch01-what-is-php/ PHP の実行モデル
2 ch02-write-program/ <?php ?> タグ / echo / セミコロン
3 ch03-comments/ // # /* */
4 ch04-html-mix/ HTML と PHP の共存
5 ch05-variables/ $変数 = 値;
6 ch06-strings/ . 連結と {$var} 展開
7 ch07-numbers/ 四則演算
8 ch08-input/ fgets(STDIN)

合計 8 chapter / 21 drill / 所要 2〜3 時間

進め方

  1. 各 chapter の slide.md を読む (2〜4 分)
  2. drill/ の問題を解く
  3. 採点: php scripts/grade.php topics/hello/<chapter>/drill/<drill>/

つまづきポイント

症状 多くの原因
Parse error セミコロン ; 忘れ・クォート抜け
\n が改行されない シングルクォート ' を使っている → ダブルクォート " に変える
Undefined variable $nameさん 日本語が変数の直後にある → "{$name}さん" で囲む (ch06 で扱う)
Could not open input file ファイルがある場所と違うディレクトリにいる

関連トピック

トピック 関係
first-step 環境構築が未済ならまずこれ
conditional echo + 変数を使って分岐を書く
function 同じ処理を関数にまとめる
class 変数+関数をクラスとしてまとめる

トピックを並列で参照する全体地図は TOPICS_INDEX.md にある。

案件 (dojo_map.tsv) での参照

topic_slug    chapter_dir
hello         topics/hello/ch01-what-is-php
hello         topics/hello/ch02-write-program
...

slug hello で参照可。01-hello / hello どちらの path でもアクセスできる (シンボリックリンク)。

このレッスンの章

  1. ch01 ch01 — PHP とは何か
  2. ch02 ch02 — PHP プログラムを書く
  3. ch03 ch03 — コメント
  4. ch04 ch04 — HTML と PHP の共存
  5. ch05 ch05 — 変数
  6. ch06 ch06 — 文字列の連結と展開
  7. ch07 ch07 — 数値と四則演算
  8. ch08 ch08 — 標準入力

スクール現場で詰まる「よくある落とし穴」

公式マニュアルには書かれていないけれど、講師として受講生がよくハマるポイントを並べました。

  1. ?> を書き忘れて空行が出力される

    PHPファイルの末尾では `?>` を省略するのが安全。書くと末尾の改行が出力に混ざってヘッダー送信エラーになる

  2. echo と print の混同

    echo は戻り値なし・複数引数OK、print は戻り値1・引数1。Web表示なら echo を使えばよい

  3. 日本語が文字化けする

    ファイルをUTF-8 BOMなしで保存する。`header("Content-Type: text/html; charset=UTF-8");` も忘れずに