跨平台用户目录路径,例如配置和缓存

0.1.0 2022-02-19 20:52 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:41 UTC


README

Continuous Integration

一个提供特定平台用户目录路径(如配置和缓存)的库。受dirs-rs启发。

特性

  • 多平台。 提供跨平台路径,以及特定平台的路径。使您的应用在所有地方运行或针对特定平台。有关更多详细信息,请参阅平台支持

  • 可定制。 添加对特定平台的支持很容易

  • 设计良好。 提供良好的设计和简单的抽象(借助强大的PHP接口和特性)。

  • 经过充分测试。 库的许多部分都有单元测试覆盖。在CI工具的帮助下,它也持续地对主要平台进行测试。

为什么?

在编写控制台应用程序(甚至图形应用程序;谁知道呢,人们可能在不久的将来开始用PHP编写图形应用程序),有时你需要一个位置来

  • 存储您的配置,并在将来的运行中重用它,
  • 创建缓存文件并提高应用程序的性能,
  • 创建媒体并将其放置在合理的位置,
  • 等等。

为了获得最佳结果,位置应该是跨平台的、永久的、可访问的(即可读和可写)、众所周知的并且非相对的。

Phirs可以帮助你在这方面的。

注意:该库不保证所有提供的路径都满足上述所有条件,尽管它有助于你实现它们。原因是性能,以及不同用户可能有不同的需求(例如,一个人可能检查路径是否存在,一个人可能假设它存在)。理论上,在标准环境和标准路径下,所有这些条件都满足(尽管目录可能实际上不存在)。

但还有另一个库!

为什么不用Basedir呢?

回到特性部分。拥有这些特性将需要进行重大重写和巨大的向后兼容性破坏。此外,由于某些未知的原因,Basedir不再在Packagist上提供。

要求

仅PHP 7.4+。

安装

和其他PHP库一样简单

composer install machitgarha/phirs

基本用法

对于大多数常见情况,以下是一个简单的用法

use MAChitgarha\Phirs\DirectoryProviderFactory;
use MAChitgarha\Phirs\Util\Platform;

// Get a provider for the current platform
$dirProvider = DirectoryProviderFactory::createStandard(Platform::autoDetect());

// Let's get some paths!
$configPath = $dirProvider->getConfigPath();
$docsPath = $dirProvider->getDocumentsPath();

// Load or save something…!

什么是提供者?为什么我们使用createStandard()?我能扩展它并将特定平台映射到我的提供者吗?有关更多详细信息,请参阅使用指南

平台支持

  • ❕: 有注释。
  • ❔: 未知或取决于环境。
  • ❓: 如❔,但很可能没有。

注释

  1. 它可能不是您或用户所期望的;例如,图片目录路径在Termux home中,而不是SD卡内部(即/sdcard)。

贡献!

在这个世界上,每个人都应该是一个贡献者。所以,通过创建一个问题、分叉并改进它,或者只是向您的PHP开发者朋友介绍它来开始帮助这个项目吧!

如果您想了解代码的整体概览,请阅读使用指南

要获得最佳结果,请参阅贡献指南

许可证

该项目遵循Apache 2.0 许可协议