PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのリソース(Resource)型とは?定義・使い方とget_resource_type()関数を解説

リソース型の定義と使い方

PHPにおけるリソース(Resource)は、外部リソースへの参照を保持するための特殊なデータ型です。リソース変数は、ストリーム、ファイル、データベース接続など、外部のデータソースへの参照として機能します。これらのリソースは、それぞれ専用のPHP関数によって作成されます。たとえば、fopen()関数はディスク上のファイルを開き、その参照がリソース変数に格納されます。

PHPのZendエンジンは参照カウント方式を採用しています。そのため、参照カウントがゼロになったリソースはガベージコレクタによって自動的に破棄されます。したがって、リソース型が使用しているメモリを手動で解放する必要はありません。

PHPスクリプトでは、対応する関数を使うことで、さまざまな種類のリソースを扱うことができます。主なリソースタイプの一覧を以下の表にまとめました。

リソースタイプ名作成する関数破棄する関数説明
bzip2bzopen()bzclose()Bzip2圧縮ファイル
curlcurl_init()curl_close()Curlセッション
ftpftp_connect()ftp_close()FTPストリーム
mssql linkmssql_connect()mssql_close()Microsoft SQL Serverデータベースへのリンク
mysql linkmysql_connect()mysql_close()MySQLデータベースへのリンク
mysql resultmysql_db_query()mysql_free_result()MySQLの結果セット
oci8 connectionoci_connect()oci_close()Oracleデータベースへの接続
ODBC linkodbc_connect()odbc_close()ODBCデータベースへのリンク
pdf documentpdf_new()pdf_close()PDFドキュメント
streamopendir()closedir()ディレクトリハンドル
streamfopen()、tmpfile()fclose()ファイルハンドル
socketfclose()ソケットハンドル
xmlxml_parser_create()xml_parser_free()XMLパーサー
zlibgzopen()gzclose()gz圧縮ファイル
zlib.deflatedeflate_init()なしインクリメンタルdeflateコンテキスト
zlib.inflateinflate_init()なしインクリメンタルinflateコンテキスト

なお、表内のmysql_*系関数およびmssql_*系関数は、現在のPHPでは非推奨または削除されており、代わりにmysqli拡張モジュールやPDOを使用することが推奨されています。

また、PHPには変数のリソースタイプを取得できるget_resource_type()関数が用意されています。

構文

get_resource_type ( resource $handle ) : string

$handleには、タイプを取得したいリソース変数を指定します。この関数は、対応するリソースタイプ名を文字列として返します。

次の例では、ディスク上のファイルのリソースタイプを確認しています。

例1:var_dump()による確認

<?php
$fp = fopen("test.txt", "w");
var_dump($fp);
?>

出力

このコードを実行すると、次のような結果が出力されます。

resource(5) of type (stream)

例2:get_resource_type()関数の使用

<?php
$fp = fopen("test.txt", "w");
echo get_resource_type($fp) . "\n";
?>

出力

このコードを実行すると、次のような結果が出力されます。

stream
  1. PHPのinstanceof演算子とは?オブジェクトの型判定方法をわかりやすく解説

    はじめにPHPでは、ある変数が特定のクラスのオブジェクト(インスタンス)であるかどうかを判定できます。この目的のために用意されているのが、instanceof 演算子です。instanceof演算子を使うことで、オブジェクト指向プログラミングにおいて型のチェックを行い、安全で堅牢なコードを書くことが可能になります。基本構文$var instanceof クラス名この演算子は、$var が指定したクラスのオブジェクトであればブール値の TRUE(true) を返し、そうでなければ FALSE(false) を返します。基本的な使用例次の例では、instanceof演算子を使って、変数 $a がユ

  2. システムリソースとは?4つの種類と仕組み、エラーの直し方を徹底解説

    「限られたリソースを最大限に活かす力」は、あらゆる場面で魅力的な特性です。ここでいう「有効活用」とは、大量のリソースを保有していることではなく、手持ちの scarce なリソースの潜在能力を最大限に引き出す能力を指します。これは現実社会だけでなく、私たちが日々使っているハードウェアやソフトウェアにもそのまま当てはまります。 たとえば、高性能な車は多くの人にとって憧れの存在ですが、実際にスポーツカーやスポーツバイクを購入する人はごく一部です。購入しない理由を尋ねると、多くの人は「実用的じゃないから」と答えるでしょう。 つまり、社会全体としても私たちの選択は「効率性」に傾いているのです。大衆に