定義と使い方
- PHPバージョン
- 4+
is_resource()関数は、指定された値がリソース(resource)型であるかを確認します。
引数として渡された値がリソース型であればtrueを返し、そうでなければfalseを返します。
リソース(resource)型は、外部リソースと相互作用する際に使用されるデータ型です。例えば、ファイル、データベース接続、画像、ネットワーク接続などがリソースに該当します。
基本例
/* ファイルリソース */
$file = fopen('test.txt', 'w');
var_dump(is_resource($file)); // bool(true)
/* データベース接続リソース */
$connection = mysqli_connect("localhost", "username", "password", "database");
var_dump(is_resource($connection)); // bool(true)
/* 画像リソース(画像生成のためにGDライブラリを使用する場合) */
$image = imagecreate(100, 100);
var_dump(is_resource($image)); // bool(true)
/* ネットワーク接続リソース */
$network = fsockopen("example.com", 80);
var_dump(is_resource($network)); // bool(true)
参考にしてください!gettype()関数は、与えられた値のデータタイプを文字列として返します。
構文
is_resource(mixed $value): bool
引数
$value |
必須。リソース(resource)型を確認する値です。 |
|---|
戻り値
引数として渡された値がリソース型であればtrueを返し、そうでなければfalseを返します。
注意点
is_resource()関数を使用する際、注意すべき点があります。
閉じられたリソース変数の場合、falseを返します。
is_resource()関数は厳密な型検査関数ではありません。閉じられたリソース変数の場合、falseを返します。
閉じられたリソース(closed resource)とは、外部リソースと相互作用する間に使用されていたリソースが、現在は閉じられていることを表します。閉じられたリソースは、もはやアクティブではなく、使用できないことを意味します。
閉じられたリソースは、次のコード例を通じて理解することができます。
/* ファイルを開きます。 */
$fp = fopen('test.txt', 'w');
var_dump(is_resource($fp)); // bool(true)
/* ファイルハンドルを閉じます。 */
fclose($fp); // 閉じられたリソース
var_dump(is_resource($fp)); // bool(false)
このコード例からわかるように、閉じられたリソース変数の場合、falseを返します。
閉じられたリソースを確認するには、gettype()関数を使用してください。この関数は、閉じられたリソースの場合、'resource (closed)'という文字列を返します。
/* ファイルを開きます。 */
$fp = fopen('test.txt', 'w');
/* ファイルハンドルを閉じます。 */
fclose($fp);
echo gettype($fp); // 'resource (closed)'
メモリリークの防止
is_resource()関数を使用してリソースの有効性を確認する場合、該当するリソースを使用した後は適切に解放する必要があります。そうしないと、パフォーマンスのオーバーヘッドを発生させる可能性があります。リソースをこれ以上使用しない場合には、fclose()(ファイルハンドルの場合)、mysqli_close()(MySQL接続の場合)、または該当するリソースを解放する他の関数を使用して、メモリリークを防止する必要があります。
活用例
is_resource()関数は、次のような場合に使用すると便利、または有用です。
リソース変数が有効であるかを確認
PHPでファイルハンドル、データベース接続、イメージリソース、ネットワーク接続などの外部リソースを扱う際、該当する変数が有効なリソースであるかを確認できます。
/* ファイルを開きます。 */
$file = fopen('test.txt', 'r');
if (is_resource($file)) {
// ファイル処理コード
} else {
echo 'ファイルが有効ではありません。';
}
/* ファイルハンドルを閉じます。 */
fclose($file);
xml_parser_create()を使用したリソースタイプの確認
様々なタイプのリソースを扱う際、is_resource()関数を使用して有効性を検証できます。
/* XMLパーサーの作成 */
$xml_parser = xml_parser_create();
if (is_resource($xml_parser)) {
// XMLパーサーが有効なリソースである場合のみパースを実行できる
xml_parse($xml_parser, "<tag>content</tag>", true);
// 結果の処理
xml_parser_free($xml_parser);
} else {
echo '有効なXMLパーサーリソースではありません。';
}
- これらの例は、
is_resource()関数の基本的な使い方を示しています。 - リソースの作成はシステム環境によって失敗する可能性があるため、作業を行う前に有効性を検証するのが安全です。
- リソースを使用した作業を完了した後は、リソースを閉じることが重要です。
- リソースを閉じないとメモリリークが発生する可能性があります。