📅  最后修改于: 2023-12-03 14:45:09.167000             🧑  作者: Mango
在 PHP 中, PH 地址格式是一种通用的方式来描述替代协议的 URL。
一个 PH 地址由如下几部分构成:
ph://
- 协议名 (PH 协议)[resource_type]/[resource_name]
- 资源类型和名称, 可以是自定义的字符串,但对于 PHP 内建函数的 PH URLs,它们使用 PHP 命名空间类名和函数名?query
- 可选的查询参数,可以由可选的名称/值对组成自定义 PH 资源类型:
ph://my_resource_type/my_resource_name?my_param=value
PHP 命名空间下的函数:
ph://function/str_replace?search=foo&replace=bar
PHP 命名空间下的类:
ph://class/DateTime?timezone=UTC
PHP 提供了 stream_resolve_include_path
函数来处理 PH 地址。例如:
$full_path = stream_resolve_include_path('ph://my_resource_type/my_resource_name');
在这个例子中,stream_resolve_include_path
函数会查找 my_resource_type
设定的位置,在找到 my_resource_name
后返回完整的物理路径。
除了作为位置描述符使用外, PH 地址也可以被用作统一调用接口(Uniform Invocation Interface),可以通过 stream_wrapper_register
函数来实现。
有些情况下,在代码中预先设定一个 URL 是不现实的。在这种情况下, PH 地址也可以作为替代协议 (alternate protocols) 的一个选择。 可以使用 stream_wrapper_register
将 PH 地址注册在一个 PHP 自查找的可寻址协议列表中。(比如 http://
, ftp://
或其它自定义协议)
stream_wrapper_register("myproto", "MyProtoStream");
PHP 内建函数的 PH URLs 构成如下:
phar://$pharname/$pathinarchive
zlib://$filepath
compress.zlib://$filepath
zip://$zipfile#path
ssh2://$username:$password@$host:$port/$path
file://$filepath
从 PHP 7.4 开始, PH 地址不再支持将 include
, require
, include_once
, require_once
作为协议名。 这些关键字将被保留供语言本身使用。