PHPackages                             usox/harm - 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. [Database &amp; ORM](/categories/database)
4. /
5. usox/harm

AbandonedArchivedLibrary[Database &amp; ORM](/categories/database)

usox/harm
=========

Active record/table data gateway hybrid for hack strict mode

v4.2.2(7y ago)3547[1 issues](https://github.com/usox/harm/issues)MITShell

Since Jul 19Pushed 7y ago1 watchersCompare

[ Source](https://github.com/usox/harm)[ Packagist](https://packagist.org/packages/usox/harm)[ Docs](https://github.com/usox/harm)[ RSS](/packages/usox-harm/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (33)Used By (0)

[![Build Status](https://camo.githubusercontent.com/e78ce2922ef6512d5bad33ee267a821ad5220cd1bdb2b111dc25aa7bc89161e7/68747470733a2f2f7472617669732d63692e6f72672f75736f782f6861726d2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/usox/harm)

HaRM - Hack Relation Mapper
===========================

[](#harm---hack-relation-mapper)

Goal
----

[](#goal)

The main purpose of HaRM is to perform simple CRUD-Operations in hack strict mode - that's it.

Usage
-----

[](#usage)

- Create a .harm file containing the database structure (see `tests/sample.harm` for a boilerplate).
- Generate interface `./bin/harmgen interface  > MyTableInterface.hh`
- Generate table `./bin/harmgen table  > MyTable.hh`
- Use your existing PDO instance for the database connection

See the generated interface for further information.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 98.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 ~31 days

Recently: every ~5 days

Total

32

Last Release

2620d ago

Major Versions

0.5.3 → v1.0.02018-01-26

v1.0.1 → 2.0.x-dev2018-04-06

v2.0.0 → v3.0.02018-06-19

3.0.x-dev → v4.0.02018-09-29

### Community

Maintainers

![](https://www.gravatar.com/avatar/b22cf2b1ec842e01f67e5e40bcd5eb3d2ac3b02cd465ad3e00ecde3935a0fa60?d=identicon)[usox](/maintainers/usox)

---

Top Contributors

[![usox](https://avatars.githubusercontent.com/u/5184763?v=4)](https://github.com/usox "usox (69 commits)")[![WorksDev](https://avatars.githubusercontent.com/u/6623695?v=4)](https://github.com/WorksDev "WorksDev (1 commits)")

---

Tags

databasehackhacklanghhvmormpostgresqldatabaseormhhvmhackhacklang

### Embed Badge

![Health badge](/badges/usox-harm/health.svg)

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

###  Alternatives

[friendsofsymfony1/doctrine1

PHP Database ORM for Symfony1. Do NOT use for new projects: please move to a newest Symfony release and Doctrine2

40581.8k](/packages/friendsofsymfony1-doctrine1)[icanboogie/activerecord

ActiveRecord Object-relational mapping

135.0k2](/packages/icanboogie-activerecord)[andreagroferreira/laravel-sync-tracker

A Laravel package for tracking entity synchronization status between systems

113.0k](/packages/andreagroferreira-laravel-sync-tracker)

PHPackages © 2026

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