PHP 特殊类型有哪些?怎么用 null、resource 和 object 类型?

文章导读
上一个 测验 下一个 PHP 的两种数据类型 resource 和 NULL 被归类为 特殊类型。resource 类型对象引用外部资源,如数据库连接、文件流等。另一方面,NULL 数据类型是未被赋值的变量。在本章中,我们将详细了解这些类型。
📋 目录
  1. Resource 类型
  2. NULL 类型
A A

PHP 特殊类型



上一个
测验
下一个

PHP 的两种数据类型 resourceNULL 被归类为 特殊类型。resource 类型对象引用外部资源,如数据库连接、文件流等。另一方面,NULL 数据类型是未被赋值的变量。在本章中,我们将详细了解这些类型。

Resource 类型

PHP 程序经常需要与外部环境交互,如数据库或磁盘文件等。在 PHP 中,这些被视为 resource。resource 是一种特殊数据类型,引用任何此类外部资源。PHP 使用相关函数来创建这些资源。例如,fopen() 函数打开磁盘文件,其引用存储在 resource 变量中。

PHP 的 Zend engine 使用引用计数系统。因此,引用计数为零的 resource 会由垃圾回收器自动销毁,resource 数据类型使用的内存无需手动释放。

不同的内置 PHP 函数返回各自的 resource 变量。随后,PHP 使用它们与相应的外部环境交互。例如,fopen() 函数返回文件 resource,作为文件句柄,通过此 resource 变量实现对文件的读写操作。

下表总结了返回 resource 变量的不同函数 −

Resource 类型 内置函数 定义
生成 销毁
bzip2 bzopen() bzclose() Bzip2 文件
curl curl_init() curl_close() Curl 会话
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 socket_create() Socket_close() Socket 句柄
xml xml_parser_create() xml_parser_free() XML 解析器
zlib gzopen() gzclose() gz 压缩文件
zlib.deflate deflate_init() None() 增量 deflate 上下文
zlib.inflate inflate_init() None() 增量 inflate 上下文

PHP 提供了 get_resource_type() 函数,用于返回变量的 resource 类型。

get_resource_type ( resource $handle ) : string

其中 $handle 是要获取类型的 resource 变量。该函数返回对应 resource 类型的字符串。

还有 get_resource_id() 函数,用于返回给定 resource 的整数标识符。

get_resource_id(resource $resource): int

示例

该函数提供了一种类型安全的方式,为给定 resource 生成整数标识符。

<?php
   $fp = fopen("hello.php", "r");
   $resource = get_resource_type($fp);
   $id = get_resource_id($fp);
   echo "The resource type is : $resource The resource ID is : $id";
?>

它将产生以下 输出

The resource type is : stream The resource ID is : 5

NULL 类型

在 PHP 中,没有值的变量被称为 null 数据类型。此类变量的值定义为 NULL。变量可以显式赋值为 NULL,或者使用 unset() 函数将其值设置为 null。

$var=NULL;

可以将其他类型的变量强制转换为 null,尽管从 PHP 7.2 开始,将 null 强制转换为其他类型已被弃用。在早期版本中,使用 (unset)$var 语法进行强制转换。

示例

以下示例展示了如何将 NULL 赋值给变量。

<?php
   $var=NULL;
   var_dump($var);
?>

它将产生以下输出

NULL

示例

以下示例将 null 变量强制转换为其他基本变量 −

<?php
   $var = NULL;
   var_dump( (int)   $var);
   var_dump((float)$var);
   var_dump((bool)  $var) ;
   var_dump( (boolean) $var);
?>

它将产生以下输出

int(0)
float(0)
bool(false)
bool(false)