《PHP8上級試験対策》stream_get_wrappers()関数で確認するストリームラッパーの一覧

  • URLをコピーしました!

はじめに

PHPには、ファイル・ネットワーク・データ圧縮といった入出力を一貫したインターフェースで扱う「ストリーム」という仕組みがあります。このストリームで、特定のプロトコルやエンコーディングを扱うための仕組みが「ラッパー(wrapper)」です。
この記事では、stream_get_wrappers() 関数で取得できるラッパー一覧と、その理解ポイントを整理します。

キーワード: stream_get_wrappers / ストリーム / ラッパー / file / http / php:// / compress.zlib

目次

🧩 ストリームとは?

PHPの「ストリーム」は、ファイル・ネットワーク・圧縮データなどを共通の仕組みで扱うための抽象化レイヤーです。たとえば、次のようなコードはいずれも同じ fopen() 関数を使っていますが、内部的には異なる種類のストリームが動いています。

fopen('file.txt', 'r');              // ローカルファイル
fopen('https://example.com', 'r');   // HTTP通信
fopen('compress.zlib://data.gz', 'r'); // 圧縮データ

これらは共通のインターフェースで操作できる点が、ストリームの大きな強みです。

🧠 ラッパー(wrapper)とは?

ストリームの「ラッパー」は、特定のプロトコルや形式を処理するためのハンドラです。
たとえば、http:// のラッパーはHTTP通信を担当し、php:// のラッパーはPHP自身の入出力を扱います。

主なラッパー一覧:

ラッパー名用途
fileローカルファイル操作
http, httpsHTTP/HTTPS通信
ftp, ftpsFTP通信
phpPHP入出力(例:php://stdout
compress.zlibzlib圧縮ファイル
dataData URIスキーム
globワイルドカード展開
pharPHARアーカイブ
zipZIPアーカイブ

🧮 stream_get_wrappers()関数とは?

PHPに現在登録されているラッパーの一覧を取得するには、stream_get_wrappers() 関数を使います。

<?php
declare(strict_types=1);
error_reporting(-1);

var_dump(stream_get_wrappers());

実行結果(標準的なPHP環境の例):

array(11) {
  [0] => string(5) "https"
  [1] => string(4) "ftps"
  [2] => string(13) "compress.zlib"
  [3] => string(3) "php"
  [4] => string(4) "file"
  [5] => string(4) "glob"
  [6] => string(4) "data"
  [7] => string(4) "http"
  [8] => string(3) "ftp"
  [9] => string(4) "phar"
  [10] => string(3) "zip"
}

✅ この出力は正しい結果です。
試験問題でも「代表的な標準環境でのラッパー一覧」として登場することがあります。

※ただし、zipftps は PHPビルド時の拡張モジュール(zip, opensslなど)によっては含まれない場合もあります。

🔍 図解:PHPストリームの全体像

┌────────────────────────┐
│       PHP Stream       │ ← 入出力を抽象化した仕組み
└─────────┬──────────────┘
          │
          ├── file://        → ローカルファイル
          ├── http://, https:// → HTTP通信
          ├── ftp://, ftps://   → FTP通信
          ├── php://        → PHPの標準入出力
          ├── compress.zlib:// → 圧縮データ
          ├── data://       → Data URI
          ├── glob://       → ワイルドカード
          ├── phar://       → PHARアーカイブ
          └── zip://        → ZIPファイル

🧾 まとめ

観点内容
ストリーム入出力を共通の仕組みで扱うPHPの抽象化レイヤー
ラッパー各プロトコルやデータ形式を扱うハンドラ
関数stream_get_wrappers()で登録済みのラッパー一覧を取得可能
試験ポイント出力結果(配列の中身)は「標準環境の代表例」として覚えておく

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次