PHPackages                             watoki/qrator - 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. watoki/qrator

Abandoned → [rtens/domin](/?search=rtens%2Fdomin)Library

watoki/qrator
=============

Administration interface based using the Command Object Pattern

02871PHP

Since Jul 20Pushed 10y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

Deprecated
==========

[](#deprecated)

This project was replaced by [rtens/domin](http://github.com/rtens/domin) and will no longer be maintained.

qrator
------

[](#qrator)

Administration interface using the [Command Object](http://c2.com/cgi/wiki?CommandObject) pattern.

For a detailed overview of *qrator*'s features and API, check out its [executable documentation](http://dox.rtens.org/projects/watoki-qrator).

Status
------

[](#status)

The project completely functional but still under heavy development which is driven by a project I'm currently working on. Once I deem *qrator* as stable enough I'll tag a release and provide some documentation on how to use it.

Until then check out the [Demo project](http://github.com/rtens/qrator-demo).

The Why
-------

[](#the-why)

A couple of weeks ago a client asked me to find a general purpose administration interface that could be used for several projects. But I couldn't find a single one that wouldn't just bypass my application and domain layers completely and talk directly to the storage system.

So I started designing an admin interface that was compatible with [Domain-Driven Design](http://en.wikipedia.org/wiki/Domain-driven_design) and hence could also manage entities in projects that implemented [Command/Query Segregation](http://martinfowler.com/bliki/CQRS.html) or [Event Sourcing](http://martinfowler.com/eaaDev/EventSourcing.html). Born was *qrator*.

Concepts
--------

[](#concepts)

These are the building blocks and their meanings in *qrator*.

### Entity

[](#entity)

An entity is any class that represents a part of your system whose state you would like to manage. Its properties are derived from the instance variables, getter and setter methods, and displayed whenever one or several entities is the result of an action.

### Action

[](#action)

Actions are *something you can do with an entity*. They are always attached to some entity and displayed whenever the entity is displayed. If an action returns something, it is displayed as the query's result.

Usually, an action either changes the state of an entity and returns nothing (i.e. Command) or returns one or several entities but changes no state (i.e. Query).

Actions can have properties as well which are rendered as form fields for the user to fill out if necessary.

### Representer

[](#representer)

Since Entities and Actions belong to the Domain layer and are thus independent of *qrator*, [EntityRepresenter](https://github.com/watoki/qrator/blob/master/src/watoki/qrator/EntityRepresenter.php)s and [ActionRepresenter](https://github.com/watoki/qrator/blob/master/src/watoki/qrator/ActionRepresenter.php)s bind them together. It knows what Actions belong to what Entities, how to instantiate and execute them, how to print them and so on.

### Registry

[](#registry)

The [RepresenterRegistry](https://github.com/watoki/qrator/blob/master/src/watoki/qrator/RepresenterRegistry.php) knows what Representers represent which class of the Domain layer. It is the single place for the whole *qrator* configuration.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.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.

### Community

Maintainers

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

---

Top Contributors

[![rtens](https://avatars.githubusercontent.com/u/1468866?v=4)](https://github.com/rtens "rtens (246 commits)")[![peterjmag](https://avatars.githubusercontent.com/u/352105?v=4)](https://github.com/peterjmag "peterjmag (1 commits)")

### Embed Badge

![Health badge](/badges/watoki-qrator/health.svg)

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

PHPackages © 2026

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