loilo/storage-paths

Get OS-specific paths for storing your project's config, cache, logs etc.

1.0.3 2019-07-15 15:45 UTC

This package is auto-updated.

Last update: 2024-04-24 06:27:13 UTC


README

Storage Paths logo: a file cabinet with an open drawer which contains printed document

Storage Paths

Tests Version on packagist.org

This package yields OS-specific paths for storing your project's config, cache, logs etc. While the API has been adjusted for PHP, the research and opinionated fallbacks stem from the Node.js env-paths package by Sindre Sorhus.

Install

composer require loilo/storage-paths

Usage

Example for macOS:

use Loilo\StoragePaths\StoragePaths;

$paths = StoragePaths::for('MyApp');

$paths->data()   === '/Users/loilo/Library/Application Support/MyApp-php';
$paths->config() === '/Users/loilo/Library/Preferences/MyApp-php';
$paths->cache()  === '/Users/loilo/Library/Caches/MyApp-php';
$paths->log()    === '/Users/loilo/Library/Logs/MyApp-php';
$paths->temp()   === '/var/folders/qh/z_hny67s57sfm_sxy1zynnkr0000gn/T/MyApp-php';

API

Signature

StoragePaths::for(string $name, array $options): StoragePathsInterface;
  • $name — The name of your project. This is used to generate the paths, therefore it needs to be a valid filename.

  • $options — An (optional) associative array of options:

    • $options['suffix']

      Type: string

      Default: 'php'

      A suffix string appended to the project name to avoid naming conflicts with native apps.

    • $options['os']

      Type: string

      Default: PHP_OS_FAMILY

      Override the operating system to generate paths for. Values correspond to the PHP_OS_FAMILY constant.

Note: Calling StoragePaths::for() only generates the path strings. It doesn't create the directories for you.

Result

The returned StoragePathsInterface provides access to the following storage methods:

  • data() — Directory for data files
  • config() — Directory for config files
  • cache() — Directory for for non-essential data files
  • log() — Directory for log files
  • temp() — Directory for temporary files