Định nghĩa và cách sử dụng
Trong PHP, Resource là một kiểu dữ liệu đặc biệt tham chiếu đến bất kỳ tài nguyên bên ngoài nào. Biến resource đóng vai trò như một tham chiếu đến nguồn dữ liệu ngoại部 như stream (luồng), file, cơ sở dữ liệu, v.v. PHP sử dụng các hàm liên quan để tạo ra các resource này. Ví dụ: hàm fopen() mở một file trên đĩa và tham chiếu của nó được lưu trữ trong một biến resource.
Zend Engine của PHP sử dụng hệ thống đếm tham chiếu (reference counting). Do đó, một resource với số lượng tham chiếu bằng 0 sẽ bị hủy tự động bởi bộ thu gom rác (garbage collector). Vì vậy, bộ nhớ được sử dụng bởi kiểu dữ liệu resource không cần được giải phóng thủ công.
Các loại resource khác nhau có thể được xử lý trong script PHP nhờ các hàm tương ứng. Bảng dưới đây liệt kê một số loại resource phổ biến:
| Tên loại Resource | Được tạo bởi | Được hủy bởi | Định nghĩa |
|---|---|---|---|
| bzip2 | bzopen() | bzclose() | File Bzip2 |
| curl | curl_init() | curl_close() | Phiên Curl |
| ftp | ftp_connect() | ftp_close() | Luồng FTP |
| mssql link | mssql_connect() | mssql_close() | Liên kết đến cơ sở dữ liệu Microsoft SQL Server |
| mysql link | mysql_connect() | mysql_close() | Liên kết đến cơ sở dữ liệu MySQL |
| mysql result | mysql_db_query() | mysql_free_result() | Kết quả MySQL |
| oci8 connection | oci_connect() | oci_close() | Kết nối đến Oracle Database |
| ODBC link | odbc_connect() | odbc_close() | Liên kết đến cơ sở dữ liệu ODBC |
| pdf document | pdf_new() | pdf_close() | Tài liệu PDF |
| stream | opendir() | closedir() | Handle thư mục |
| stream | fopen(), tmpfile() | fclose() | Handle file |
| socket | socket_create(), fsockopen() | fclose() | Handle socket |
| xml | xml_parser_create() | xml_parser_free() | Bộ phân tích XML |
| zlib | gzopen() | gzclose() | File nén gz |
| zlib.deflate | deflate_init() | Tự động | Ngữ cảnh deflate tăng dần |
| zlib.inflate | inflate_init() | Tự động | Ngữ cảnh inflate tăng dần |
Trong bối cảnh này, PHP cung cấp hàm get_resource_type() để trả về kiểu resource của một biến.
Cú pháp
get_resource_type ( resource $handle ) : string
Trong đó $handle là biến resource cần xác định kiểu. Hàm này trả về một chuỗi tương ứng với kiểu resource.
Ví dụ
Kiểm tra kiểu resource của file
<?php
$fp = fopen("test.txt", "w");
var_dump($fp);
?>
Kết quả
resource(5) of type (stream)
Sử dụng get_resource_type()
<?php
$fp = fopen("test.txt", "w");
echo get_resource_type($fp) . "\n";
?>
Kết quả
stream