本稿は PHP の基本事項に関する記事です。PHP コードを書くときに、最初に押さえておくべきファイル形式・コメント記法・文末区切り・PHP タグなどをまとめます。
基本ルール
- ファイルの拡張子は「.php」
- 単一行コメントは「//」 または 「#」
- 複数行コメントは「/* */」
- 文末は「; (セミコロン)」
- 大文字小文字: 関数名・クラス名は区別しないが、変数名は区別する
- 変数は
$から始める ($name) - 文字コードは
UTF-8(BOM なし) が標準
PHP タグ
| タグ | 用途 |
|---|---|
<?php ... ?> | 標準の PHP コードブロック |
<?= 値 ?> | echo のショートタグ (常に有効) |
<? ... ?> | ショートタグ (short_open_tag 有効時のみ、非推奨) |
PHP ファイル専用のファイル (関数定義・クラスのみ) では、最後の ?> を書かないのが推奨です (末尾の余分な改行・空白による予期せぬ出力を防げます)。
最小のサンプル
|
<?php |
HTML との混在
|
<!DOCTYPE html> |
文字列の書き方
| 記法 | 挙動 |
|---|---|
'hello' (シングルクォート) | 変数展開なし。リテラルそのまま |
"hello $name" (ダブルクォート) | 変数展開・エスケープシーケンス有効 |
HEREDOC <<<EOT ... EOT; | 複数行 + 変数展開 |
NOWDOC <<<'EOT' ... EOT; | 複数行 + 変数展開なし |
変数と型
- 変数は
$x = 1;のように宣言時に値を入れて型決定 (動的型付け) - 型:
int/float/string/bool/array/object/null/resource - 関数宣言で型を明示できる (
function f(int $x): string) declare(strict_types=1);を冒頭に書くと、ファイル単位で厳密な型チェックになる
制御構文の括弧
|
// 通常の波括弧 |
PHP のバージョン
| バージョン | 状況 (2026年時点の目安) |
|---|---|
| PHP 5.x | EOL。利用継続は危険 |
| PHP 7.0〜7.4 | EOL。早急に 8.x へ |
| PHP 8.0〜8.1 | EOL 済 / 終盤。本番は 8.2 以上推奨 |
| PHP 8.2 / 8.3 / 8.4 | サポート中 |
PHP 8 では型の強化・属性 (アトリビュート)・match・名前付き引数・readonly プロパティ・enum など、新しい構文が多数追加されています。
注意点
- BOM 付き UTF-8 はヘッダ送信前に出力されてしまい
headers already sentエラーになる。BOM なしで保存 - HTML 出力は必ず
htmlspecialchars()でエスケープ。テンプレートエンジン (Blade / Twig 等) を使う場合は自動エスケープを活用 - SQL はプレースホルダで渡す。文字列連結はインジェクションの温床
- 短縮タグ
<? ... ?>は環境依存。<?php ... ?>または<?= ... ?>を使う - 関数・クラス定義のみのファイルは末尾
?>を省略 error_reportingやdisplay_errorsは本番では非表示にする
関連
- 親カテゴリ: 文法 (PHP)
- PHP 本体: PHP
- 関連: 関数 / スーパーグローバル変数
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38