PHPackages                             earthit/storage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. earthit/storage

ActiveLibrary[File &amp; Storage](/categories/file-storage)

earthit/storage
===============

PHP Storage

2.1.0(10mo ago)013.6k2MITPHPPHP &gt;=8.1

Since Oct 26Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/EarthlingInteractive/PHPStorage)[ Packagist](https://packagist.org/packages/earthit/storage)[ RSS](/packages/earthit-storage/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (46)Used By (2)

[![Build Status](https://camo.githubusercontent.com/709485bf99dbce5930c9c5b50fce0e5f03a619ca68fd3baa941249c62e079c36/68747470733a2f2f7472617669732d63692e6f72672f45617274686c696e67496e7465726163746976652f50485053746f726167652e737667)](https://travis-ci.org/EarthlingInteractive/PHPStorage)

PHP Storage
===========

[](#php-storage)

A data access layer.

Goals:

- Glean schema information from a EarthIT\_Schema object.
- Provide a consistent API for fetching from and storing into a database or databases.
- Objects passed in and out are in 'schema form'; transformations to database form are done by the storage layer.
- Allow custom storage layers to do additional transformations.

Design principles:

- Excplicitly state which representations of objects are used where, rather than relying on coincidental similarities between them.

    - e.g. a function that takes an object should indicate in its documentation which form that object should be in.
- Data is separate from the plumbing. Data objects are just arrays (or, conceivably, scalar values. But usually arrays).
- Backend agnostic. May be RDB. May be something else entirely.
- Allow efficient access to collections of objects of the same type.

    - Functions should generally be written to operate on collections to amortize overhead costs.
- Should be able to use query generation and object conversion utilities independently.
- Punting on multi-table joins for now. Easier to just do the joins in PHP by querying by sets of IDs, especially when links cross database boundaries.

Object representations
----------------------

[](#object-representations)

- DB-internal form: actual bits stored in the database. Our PHP code never sees these.
- DB-external form:

    Values from the database with minimal transformations applied to make them representable in PHP. e.g.

    - BIGINTs are represented as strings
    - GEOMETRY values are represented as GeoJSON strings

    Keys correspond exactly to column names.
- Schema form: form as described in schema.txt.

    JSON fields are decoded

    keys are 'plain english' field names.
- JSO form:

    Standard form for JSON REST services. Values will usually be the same as those in schema form, but keys will be 'camelCase' instead of 'plain english'.

    - "JSO" is not a typo. Objects in this form are the objects that would be JSON-encoded without JSON encoding yet applied, hence no 'N'.
    - 'id' field is added to objects that have composite keys.
    - Transforming to/from this form is out of the scope of this library.

###  Health Score

48

—

FairBetter than 95% of packages

Maintenance54

Moderate activity, may be stable

Popularity22

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity85

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 97.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~80 days

Recently: every ~771 days

Total

45

Last Release

315d ago

Major Versions

0.4.10 → 2.0.02024-01-05

PHP version history (2 changes)0.1.0PHP &gt;=5.3

2.0.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/84f2846fb867825e6831a99f7ba5ca9301de56a424928e2c494f81c2c6061677?d=identicon)[TOGoS](/maintainers/TOGoS)

---

Top Contributors

[![TOGoS](https://avatars.githubusercontent.com/u/57142?v=4)](https://github.com/TOGoS "TOGoS (120 commits)")[![jrole0](https://avatars.githubusercontent.com/u/7505885?v=4)](https://github.com/jrole0 "jrole0 (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/earthit-storage/health.svg)

```
[![Health](https://phpackages.com/badges/earthit-storage/health.svg)](https://phpackages.com/packages/earthit-storage)
```

###  Alternatives

[knplabs/gaufrette

PHP library that provides a filesystem abstraction layer

2.5k39.8M123](/packages/knplabs-gaufrette)[superbalist/flysystem-google-storage

Flysystem adapter for Google Cloud Storage

26320.6M30](/packages/superbalist-flysystem-google-storage)[illuminate/filesystem

The Illuminate Filesystem package.

15161.6M2.6k](/packages/illuminate-filesystem)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[flowjs/flow-php-server

PHP library for handling chunk uploads. Works with flow.js html5 file uploads.

2451.6M15](/packages/flowjs-flow-php-server)[madnest/madzipper

Easier zip file handling for Laravel applications.

1382.3M6](/packages/madnest-madzipper)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
