UPDATE:2020年07月01日
PHP の リソース型(resource) について
- リソース型 は PHPの外部世界 とやり取りを行うデータが格納されている型
- リソース はデータベースや画像ファイルなどの 外部情報
- リソース型 の種類は 特殊型
- リソース型 のチェックは is_resource() 関数 で行う
リソース型とは
- リソース型 は PHPの外部世界 とやり取りを行うデータが格納されている型
- リソース はデータベースや画像ファイルなどの 外部情報
リソースはPHPと外部世界とのやり取りを行うための特別な変数です。例えばPHPからMySQLやSQLite、テキストファイルなどのデータベースへ接続したり、画像ファイルを開いたりする際、PHPではそれらを実行するための専用の関数が定義されています。そのような関数を実行して取得した接続情報を変数へ格納することが可能で、これらの変数は外部リソースを保持し、型はリソース型となります。
つまり、リソースは、特別な関数により作成された外部情報を持つ変数のことです。そのような変数の型がリソース型となるのです。
PHPの外部世界とのやり取りを行うためには、様々な処理が必要になりますが、リソースにはそのような処理を完結に扱うためのデータが格納されます。したがって、通常行う複雑な手続きが、リソースを呼び出すだけで一括して処理することが可能となり、外部リソースのやり取りが非常に楽になります。
リソースの実体は整数値です。リソースは外部世界とのやり取りを実現するための数値データ(ハンドル)が格納されているハンドラです。
このような特殊な型のため、他の型からリソース型への変換はできません。
リソースへの参照が無くなった時点でそのリソースは自動的に削除されます。これにより、このリソースが作成した全てのリソースは開放され、同時にメモリも開放されます。
PHPには多くのリソースを 生成、使用、破棄 するための関数が定義されています。
MySQLデータベースとのやり取り
データベースに接続
1 | $dbConnect = database_connect(); |
リソースを呼び出してクエリを実行
1 | $dbConnect = database_connect(); |
リソースを呼び出してクエリを実行
1 | database_query($dbConnect); |
接続解除
1 | $dbConnect = ''; |
データ型の種類
- PHPの8つのデータ型:
- PHPの3のデータ種類:
データ型の表
| 型名 | 種類 | 例 | |
|---|---|---|---|
| 文字列型 | 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 (大文字・小文字を区別しない) |
リソース型であるか調べる
- リソース型 のチェックは is_resource() 関数 で行う
ある値がリソース型かどうか調べるにはis_resource()関数を使用します。
1 2 | $dbConnect = database_connect(); if(is_resource($dbConnect) === TRUE) echo 'リソース型です。'; |
結果は
となります。
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"; //リソース型ではありません。 ?> |
タグ(=記事関連ワード)
日付
最終更新日:2020年07月01日


