hiqdev/hoa-protocol

Hiqdev Hoa\Protocol 库。

1.0.2 2022-07-29 16:51 UTC

This package is auto-updated.

Last update: 2024-09-07 20:06:14 UTC


README

Hoa 项目已被存档,既不提供升级或补丁,也不接受合并请求。

HOA 包包括一些针对 PHP 8.0 和 PHP 8.1 已过时的代码,但我们需要这些包才能在现代 PHP 版本上运行。

从哪里开始变化?

更改主要影响了方法声明中的返回数据类型提示,以及对未初始化属性的访问。

如何使用

我们目前已分叉以下包,主要是为了让 hoa/ruler 与 PHP 8.1 兼容

您只需将 composer.json 中的 hoa 包的要求替换为相应的分叉包:无需在代码库中更改任何内容。

如果您使用某个需要 hoa 的包,只需将分叉添加到您的项目根目录 composer.json 中:我们已经将分叉标记为替代品,所以 composer 将安装它们而不是原始包。

版本

我们从最新的 hoa 包版本分叉,并从 1.0 版本开始提升自己的版本。

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请阅读贡献者指南

快速使用

我们提出了一种快速概述,说明了如何列出当前协议的树结构,如何解析 hoa:// 路径,以及如何在此树中添加新节点。

探索资源

首先,要获取 hoa:// 协议的实例,您应使用代表协议树根的 Hoa\Protocol\Protocol 类上的静态 getInstance 方法。

echo Hoa\Protocol\Protocol::getInstance();

/**
 * Might output:
 *   Application
 *     Public
 *   Data
 *     Etc
 *       Configuration
 *       Locale
 *     Lost+found
 *     Temporary
 *     Variable
 *       Cache
 *       Database
 *       Log
 *       Private
 *       Run
 *       Test
 *   Library
 */

我们看到有 3 个“子根”

  1. Application,代表应用程序的资源,如公共文件(在 Public 节点)、模型、资源等与应用程序相关的所有内容。
  2. Data,代表应用程序所需的数据,如配置文件、区域设置、数据库、测试等。
  3. Library,代表所有 Hoa 的库。

因此,hoa://Library/Protocol/README.md 代表指向此实际文件的抽象路径。无论您在磁盘上的位置如何,此路径始终有效且指向此文件。这在您希望访问此类配置文件(如 hoa://Data/Etc/Configuration/Foo.php)的应用程序中非常有用:也许 Data 目录不存在,也许 EtcConfiguration 目录也不存在,但 hoa:// 树的每个节点都会解析到一个包含您的 Foo.php 配置文件的合法目录。这是一个 资源抽象路径

解析路径

我们可以使用全局 resolve 函数或 Hoa\Protocol\Protocol::resolve 方法来解析路径。

var_dump(
    resolve('hoa://Library/Protocol/README.md')
);

/**
 * Might output:
 *     string(37) "/usr/local/lib/Hoa/Protocol/README.md"
 */

在树中注册新节点

hoa:// 协议是一个树。因此,要在此树中添加新的“组件”/“目录”,我们必须创建一个节点并将其注册为现有节点的子节点。因此,在以下示例中,我们将创建一个指向 /Volumes 目录的 Usb 节点,并将其添加为新子根,即根的直接子节点。

$protocol   = Hoa\Protocol\Protocol::getInstance();
$protocol[] = new Hoa\Protocol\Node('Usb', '/Volumes/');

我们现在在这里。现在,解析 hoa://Usb/StickA 可能指向 /Volumes/StickA(如果存在)

var_dump(
    resolve('hoa://Usb/StickA')
);

/**
 * Might output:
 *     string(15) "/Volumes/StickA"
 */

文档

《Hoa\Protocol》黑客手册 包含了关于如何使用此库以及它是如何工作的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目的网站上找到: hoa-project.net

获取帮助

主要有两种方式获取帮助

贡献

你想贡献吗?谢谢!详细的 贡献指南 解释了你需要知道的一切。

许可证

Hoa 采用新 BSD 许可证(BSD-3-Clause)。请参阅 LICENSE 了解详情。