2.

PHP 入門 — サーバーサイドスクリプト言語の概要・特徴・バージョン進化・エコシステム

編集
この記事の要点
  • PHP は Web に特化したサーバーサイドスクリプト言語。1995 年に Rasmus Lerdorf が開発し、現在は The PHP Group が管理
  • 世界の Web サイトの 70% 以上(WordPress / Drupal / Joomla 等)で稼働。CMS 用途で圧倒的シェア
  • バージョン進化: 5.6(旧 LTS)→ 7.x(性能 2 倍)→ 8.x(JIT、属性、enum、readonly、Fibers)
  • 主要フレームワーク: Laravel(フルスタック)/ Symfony(コンポーネント)/ CakePHP / Slim
  • 実行モデル: PHP-FPM(FastCGI Process Manager)+ Nginx / Apache。エコシステムは Composer(依存管理)と PECL(拡張)

PHP とは

PHP(PHP: Hypertext Preprocessor、再帰的頭字語)は、Web アプリケーション開発に特化したサーバーサイドスクリプト言語です。HTML に埋め込んで実行できる構文と、低い学習コスト、豊富な標準関数により、世界中の Web サイトで広く使われています。

W3Techs の統計では、サーバーサイド言語を特定できる Web サイトのうち 約 75% が PHP を採用しています。WordPress(約 43% のシェア)が PHP で書かれていることが大きな理由です。

歴史と進化

バージョンリリース主要機能
PHP 1.01995Rasmus Lerdorf が個人ホームページ用に作成
PHP 42000Zend Engine 1.0、オブジェクト指向の基礎
PHP 5.x2004〜2014本格的な OOP、PDO、名前空間、Trait
PHP 7.02015Zend Engine 3、性能 2 倍、スカラー型宣言、戻り値型宣言
PHP 7.42019型付きプロパティ、アロー関数、null 合体代入演算子
PHP 8.02020JIT コンパイラ、Union 型、Named Arguments、Attributes、Match 式
PHP 8.12021enum、readonly プロパティ、Fibers、never 戻り値型
PHP 8.22022readonly クラス、DNF 型、定数の trait 化
PHP 8.32023typed class 定数、json_validate()、Override 属性

言語の特徴

  • HTML に埋め込み可能: タグで HTML 中に直接記述
  • 動的型付け: 型宣言は任意(PHP 7+ で strict_types 可能)
  • 豊富な標準関数: 文字列・配列・日付・ファイル等 5000 以上
  • OOP 完全対応: クラス、継承、インターフェース、Trait、抽象クラス、final
  • 例外処理: try / catch / finally、PHP 7 から Error クラスも throw 可能
  • JIT コンパイル(PHP 8+): 計算処理で 2〜3 倍の性能向上

Hello World と基本構文

 'Alice', 'age' => 30];
echo "{$user['name']} は {$user['age']} 歳\n";

// 関数(型宣言付き、PHP 8+)
function greet(string $name, int $times = 1): string {
    return str_repeat("Hello $name! ", $times);
}
echo greet('PHP', 3);

// クラス(PHP 8.1+ enum, readonly)
enum Status: string {
    case Active = 'active';
    case Inactive = 'inactive';
}

readonly class Product {
    public function __construct(
        public string $name,
        public int $price,
        public Status $status = Status::Active,
    ) {}
}

$p = new Product('Book', 1500);
echo "{$p->name}: {$p->price}円 ({$p->status->value})\n";

インストールと確認

# macOS (Homebrew)
brew install php
php -v

# Ubuntu / Debian
sudo apt update
sudo apt install -y php php-cli php-fpm php-mysql php-mbstring php-xml
php -v

# CentOS / RHEL / Rocky Linux
sudo dnf install -y php php-cli php-fpm

# Windows (公式バイナリ)
# https://windows.php.net/download/ から ZIP をダウンロード
# 解凍 → PATH に追加

# バージョン確認
php -v
# PHP 8.3.x (cli) (built: ...)
# Copyright (c) The PHP Group
# Zend Engine v4.3.x

# 拡張モジュール確認
php -m

# 内蔵 Web サーバー起動(開発用)
php -S localhost:8000

# CLI で 1 行実行
php -r "echo PHP_VERSION;"

実行モデル: PHP-FPM

本番環境では PHP-FPM(FastCGI Process Manager)を Nginx / Apache の背後で動かすのが標準です。リクエストごとにプロセスを起動する CGI より遥かに高速。

# Nginx 設定例
server {
    listen 80;
    server_name example.com;
    root /var/www/html/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

エコシステム

ツール役割
Composer依存パッケージ管理(PHP の npm 相当)composer require monolog/monolog
Packagistパッケージリポジトリpackagist.org
PECLC 拡張モジュール(redis、xdebug 等)pecl install redis
PHPUnit単体テストフレームワークvendor/bin/phpunit
PHPStan / Psalm静的解析vendor/bin/phpstan analyse
Xdebugデバッガ・プロファイラIDE 連携でステップ実行

主要フレームワーク

  • Laravel: 最大シェア。エレガントな構文、Eloquent ORM、Artisan CLI、Blade テンプレート。当 Wiki も Laravel 製
  • Symfony: コンポーネント志向、エンタープライズ向け、Laravel の基盤でもある
  • CakePHP: 規約優先の設計、日本での採用例も多い
  • Slim / Lumen: マイクロフレームワーク、API 専用に最適
  • WordPress / Drupal / Joomla: CMS(フレームワークではないが PHP の主用途)

FAQ

Q: PHP は遅いと聞くが本当?
A: PHP 5 時代の話です。PHP 7 で性能が 2 倍、PHP 8 の JIT でさらに 1.5〜2 倍に。現在は Python や Ruby より高速です。

Q: PHP は時代遅れ?
A: 古い構文や悪い慣習が残る一方、PHP 8 系の構文は非常にモダン(enum、readonly、Match 式、Attributes)。Laravel 11 / Symfony 7 等で活発に進化中です。

Q: どのバージョンを使えばよい?
A: 新規プロジェクトは PHP 8.3 (現行) または 8.2 (LTS 的)。PHP 7.4 以前は EOL なので本番禁止です。

Q: Python と PHP どちらを学ぶべき?
A: Web サイト / CMS / EC サイトを作るなら PHP、機械学習 / データ分析 / スクリプトなら Python。両方学んで損はありません。

編集
Post Share
子ページ
  1. インストール方法
  2. 文法
  3. Composerのインストール
  4. 内部関数
  5. フレームワーク
  6. エラー一覧
  7. 改行出力
  8. printとechoの違い
  9. シングルクォートとダブルクォートの違い
  10. returnとyieldの違い
  11. var_dumpをログ出力
  12. CSV読み込み
  13. 待機・処理の遅延
  14. ログファイルにエラーを出力する方法
  15. エラーログ出力関数
  16. URLパラメータの配列化
  17. empty, is_null. issetの判定比較表
  18. httpステータスコードの付与
  19. バージョンの確認
  20. php.ini
  21. APIを呼び出す方法
  22. 外部ファイルを呼び出す方法
  23. カンマ区切りの文字列を配列に変換
  24. 配列からランダムに値を取り出す方法
  25. Webスクレイピング
同階層のページ
  1. Java
  2. PHP
  3. Python
  4. C#
  5. C++
  6. Ruby
  7. Go
  8. HTML
  9. CSS
  10. JavaScript
  11. TypeScript
  12. VBA
  13. Google Apps Script
  14. Julia
  15. Swift
  16. オブジェクト指向言語共通
  17. Gen