📜  ph 地址格式 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:09.167000             🧑  作者: Mango

PHP - PH 地址格式介绍

在 PHP 中, PH 地址格式是一种通用的方式来描述替代协议的 URL。

PH 地址的构成

一个 PH 地址由如下几部分构成:

  • ph:// - 协议名 (PH 协议)
  • [resource_type]/[resource_name] - 资源类型和名称, 可以是自定义的字符串,但对于 PHP 内建函数的 PH URLs,它们使用 PHP 命名空间类名和函数名
  • ?query - 可选的查询参数,可以由可选的名称/值对组成
PH 地址示例

自定义 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
使用 PH 地址

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 函数来实现。

使用 PH 地址替代协议

有些情况下,在代码中预先设定一个 URL 是不现实的。在这种情况下, PH 地址也可以作为替代协议 (alternate protocols) 的一个选择。 可以使用 stream_wrapper_register 将 PH 地址注册在一个 PHP 自查找的可寻址协议列表中。(比如 http://, ftp:// 或其它自定义协议)

stream_wrapper_register("myproto", "MyProtoStream");
常用 PHP 内建函数的 PH URLs

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 作为协议名。 这些关键字将被保留供语言本身使用。

参考链接