PHPリファレンス
UPDATE:2020年07月01日
PHP の リソース型(resource) について
PHP4.3 PHP5 PHP7
1 Minute Note
- リソース型 は PHPの外部世界 とやり取りを行うデータが格納されている型
- リソース はデータベースや画像ファイルなどの 外部情報
- リソース型 の種類は 特殊型
- リソース型 のチェックは is_resource() 関数 で行う
リソース型とは
POINT
- リソース型 は PHPの外部世界 とやり取りを行うデータが格納されている型
- リソース はデータベースや画像ファイルなどの 外部情報
テキストファイルやデータベースなど外部世界を扱う
リソースはPHPと外部世界とのやり取りを行うための特別な変数です。例えばPHPからMySQLやSQLite、テキストファイルなどのデータベースへ接続したり、画像ファイルを開いたりする際、PHPではそれらを実行するための専用の関数が定義されています。そのような関数を実行して取得した接続情報を変数へ格納することが可能で、これらの変数は外部リソースを保持し、型はリソース型となります。
つまり、リソースは、特別な関数により作成された外部情報を持つ変数のことです。そのような変数の型がリソース型となるのです。
リソースで外部情報を容易に操作する
PHPの外部世界とのやり取りを行うためには、様々な処理が必要になりますが、リソースにはそのような処理を完結に扱うためのデータが格納されます。したがって、通常行う複雑な手続きが、リソースを呼び出すだけで一括して処理することが可能となり、外部リソースのやり取りが非常に楽になります。
リソースの実態は整数値
リソースの実体は整数値です。リソースは外部世界とのやり取りを実現するための数値データ(ハンドル)が格納されているハンドラです。
このような特殊な型のため、他の型からリソース型への変換はできません。
リソースへの参照が無くなった時点でそのリソースは自動的に削除されます。これにより、このリソースが作成した全てのリソースは開放され、同時にメモリも開放されます。
PHPには多くのリソースを 生成、使用、破棄 するための関数が定義されています。
MySQLデータベースとのやり取り
例えばデータベースのMySQLとやり取りを行うために、データベースへ接続するための特別な関数を動かし、結果を変数に格納しておきます。この変数はリソース型の変数となります。データベースを利用しているアプリケーションであれば、頻繁にデータベースを呼び出すことになりますが、その際、リソース型の変数を呼び出すだけでいつでもデータベースとやり取りが行えるようになります。この特別な変数がリソース型の変数です。
データベースに接続
1 | $dbConnect = database_connect(); |
リソースを呼び出してクエリを実行
1 | $dbConnect = database_connect(); |
リソースを呼び出してクエリを実行
1 | database_query($dbConnect); |
接続解除
1 | $dbConnect = ''; |
データ型の種類
POINT
PHPには8種類のデータ型があります。文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULLです。そして、それらのデータ型は、スカラー型と複合型と特殊型に分けられます。 スカラー型は単一の値で作られている型です。文字列、整数、浮動小数点数、論理値がそれに当たります。 複合型(コレクション型)は複数の値で作られている型です。配列とオブジェクトがそれに当たります。 特殊型はリソースとNULLです。- PHPの8つのデータ型:
- PHPの3のデータ種類:
字列型(string)
整数型(integer)
浮動小数点数型(float)(double)
論理型(boolean)
配列型(array)
オブジェクト型(object)
リソース型(resource)
NULL(null)
(スカラー型)
(スカラー型)
(スカラー型)
(スカラー型)
(複合型)
(複合型)
(特殊型)
(特殊型)
スカラー型
(文字列型)
(整数型)
(浮動小数点数型)
(論理型)
複合型
(配列型)
(オブジェクト型)
特殊型
(リソース型)
(NULL)
データ型の表
型名 | 種類 | 例 | |
---|---|---|---|
文字列型 | string | スカラー型 | 'Hello World!!' "我思う、ゆえに我あり" |
整数型 | integer | スカラー型 | 1、2020、-588、+98 8進数 16進数 |
浮動小数点数型 | float(double) | スカラー型 | 1.4142、-0.18 |
論理型 | boolean | スカラー型 | TRUE | FALSE (true false) (大文字・小文字を区別しない) |
配列型 | array | 複合型 | array('name','address') |
オブジェクト型 | object | 複合型 | $oObj = new ClassName(); |
リソース型 | resource | 特殊型 | resource |
ヌル型 | null | 特殊型 | NULL | null | Null (大文字・小文字を区別しない) |
リソース型であるか調べる
POINT
- リソース型 のチェックは is_resource() 関数 で行う
ある値がリソース型かどうか調べるにはis_resource()関数を使用します。
1 2 | $dbConnect = database_connect(); if(is_resource($dbConnect) === TRUE) echo 'リソース型です。'; |
結果は
リソース型です。
となります。
is_resource() 書式
bool TRUE か FALSE = is_resource(mixed $var);
bool TRUE か FALSE = is_resource(mixed $var);
説明 | 変数のデータ型がリソース型かどうかチェックする | |
---|---|---|
引数 | mixed $var | データ型を調べる変数 |
返り値 | bool | 変数がリソース型の場合:TRUE、変数がリソース型ではない場合:FALSE |
サンプル
1 2 3 4 5 6 7 8 9 | <?php $resource = fopen("text.txt", "r"); echo is_resource($resource) ? "リソース型です。<br>\n" : "リソース型ではありません。<br>\n"; //リソース型です。 $resource = ''; echo is_resource($resource) ? "リソース型です。<br>\n" : "リソース型ではありません。<br>\n"; //リソース型ではありません。 ?> |
タグ(=記事関連ワード)
日付
公開日:2019年9月26日
最終更新日:2020年07月01日
最終更新日:2020年07月01日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/resourcetype/trackback/