在PHP中,资源 是一种特殊的数据类型,它引用任何外部资源。资源变量充当对外部数据源(例如流,文件,数据库等)的引用。PHP使用relevent函数创建这些资源。例如,fopen()函数打开磁盘文件,其引用存储在资源变量中。
PHP的Zend引擎使用参考限制系统。结果,垃圾回收器会自动销毁引用计数为零的资源。因此,资源数据类型使用的内存不需要手动释放。
借助coresponding函数,可以在PHP脚本中处理各种类型的资源。下表显示了一个选择列表-
资源类型名称 | 创建通过 | 销毁 | 定义 |
bzip2 | bzopen() | bzclose() | Bzip2文件 |
curl | curl_init() | curl_close() | 卷曲会话 |
ftp | ftp_connect(), | ftp_close() | FTP流 |
mssql link | mssql_connect() | mssql_close() | 链接到Microsoft SQL Server数据库 |
mysql link | mysql_connect() | mysql_close() | 链接到MySQL数据库 |
mysql result | mysql_db_query(), | mysql_free_result() | MySQL结果 |
oci8 connection | oci_connect() | oci_close() | 连接到Oracle数据库 |
ODBC link | odbc_connect() | odbc_close() | 链接到ODBC数据库 |
pdf document | pdf_new() | pdf_close() | PDF文件 |
stream | opendir() | closedir() | 手柄 |
stream | fopen(),tmpfile() | fclose() | 文件句柄 |
socket | | fclose() | 套筒手柄 |
xml | xml_parser_create(), | xml_parser_free() | XML解析器 |
zlib | gzopen() | gzclose() | gz压缩文件 |
zlib.deflate | deflate_init() | None() | 增量放气上下文 |
zlib.inflate | inflate_init() | None() | 增量膨胀上下文 |
在这种情况下,PHP具有get_resource_type()函数,该函数返回变量的资源类型。
要声明一个类的对象,我们需要使用new语句
get_resource_type ( resource $handle ) : string
其中$handle是要获取其类型的资源变量。此函数返回与资源类型相对应的字符串
以下示例显示了磁盘文件的资源类型
<?php $fp=fopen("test.txt","w"); var_dump($fp); ?>
输出结果
这将产生以下结果-
resource(5) of type (stream)
以下示例使用get_resource_type()函数
<?php $fp = fopen("test.txt", "w"); echo get_resource_type($fp) . "\n"; ?>
输出结果
这将产生以下结果-
stream