PHPackages                             jsonpolicy/jsonpolicy-php - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. jsonpolicy/jsonpolicy-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jsonpolicy/jsonpolicy-php
=========================

JSON Policy - Distributed Rule Engine for PHP

0.0.2(5y ago)291MITPHP

Since Oct 26Pushed 5y ago5 watchersCompare

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

READMEChangelog (1)Dependencies (1)Versions (3)Used By (0)

JSON Policy - Distributed Rule Engine
=====================================

[](#json-policy---distributed-rule-engine)

JSON Policy is the lightweight, no dependencies framework that allows you to decouple your codebase from conditional logic.

It is the domain-specific language based on the JSON-format where you prepare well-structured JSON policies that contain knowledge on when to execute certain features/services and under which circumstances.

Prerequisites
-------------

[](#prerequisites)

Before you begin, ensure you have met the following requirements: PHP 7.3+ (recommended), however, may run on PHP 7.0+; You have read [Json Policy Documentation](https://jsonpolicy.github.io/);

Installation
------------

[](#installation)

You can install the library via Composer with the following command:

```
composer require jsonpolicy/jsonpolicy-php

```

To install manually, download this repository and move all the files inside the `src` folder to the desired destination. Then simply register the autoload function as following

```
spl_autoload_register(function ($class_name) {
    if (strpos($class_name, 'JSONPolicy') === 0) {
        $filepath  = '';
        $filepath += str_replace(array('JSONPolicy', '\\'), array('', '/'), $class_name) . '.php';
    }

    if (!empty($filepath) && file_exists($filepath)) {
        require_once $filepath;
    }
});
```

Using JSON Policy
-----------------

[](#using-json-policy)

Let's imagine that you build an application for the car dealership, where based on the currently logged in agent, you determine if he/she is allowed to sell the car from available stock. Conditions under which this is determined may vary and most likely will be fluctuated regularly.

Here is how your code may look like:

```
use JsonPolicy\Manager as JsonPolicyManager;

$manager = JsonPolicyManager::bootstrap([
    'repository' => [
        file_get_contents(__DIR__  . '/policy.json')
    ]
]);

// Create the car dealership instance and pass the available list of cars that can
// be sold
$dealership = new Dealership($stock);

// Check which car is allowed to be sold based on policy attached to current
// identity
foreach ($dealership as $car) {
    if ($manager->isAllowedTo($car, 'sell') === true) {
        echo "You can sell the {$car->model} ($car->year)\n";
    } else {
        echo "You cannot sell the {$car->model} ($car->year)\n";
    }
}
```

The policy that defines all the conditions can be something like this:

```
{
    "Statement": [
        {
            "Effect": "deny",
            "Resource": "Car"
        },
        {
            "Effect": "allow",
            "Resource": "Car",
            "Action": [
                "sell",
                "view"
            ],
            "Condition": {
                "LessOrEquals": {
                    "(*int)${Car.price}": 30000
                }
            }
        }
    ]
}
```

The above policy does not allow agents to sell or even see cars that are above $30k.

Contributing To The Project
---------------------------

[](#contributing-to-the-project)

To contribute to JSON Policy, follow these steps:

1. Fork this repository.
2. Create a branch: `git checkout -b `.
3. Make your changes and commit them: `git commit -m ''`
4. Push to the original branch: `git push origin /`
5. Create the pull request.

Alternatively see the GitHub documentation on [creating a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request).

Contact
-------

[](#contact)

If you want to contact me you can reach me at .

License
-------

[](#license)

This project uses the following license: [](https://www.gnu.org/licenses/#GPL).

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 94.1% 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 ~4 days

Total

2

Last Release

2026d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4477febfbc9c4a8a2fb914e22170118383d32b872942c8f4acf294c77b0525cf?d=identicon)[jsonpolicy](/maintainers/jsonpolicy)

---

Top Contributors

[![vasyltech](https://avatars.githubusercontent.com/u/12138560?v=4)](https://github.com/vasyltech "vasyltech (16 commits)")[![jsonpolicy](https://avatars.githubusercontent.com/u/71992459?v=4)](https://github.com/jsonpolicy "jsonpolicy (1 commits)")

---

Tags

json policyaccess controlsaccess controls as code

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jsonpolicy-jsonpolicy-php/health.svg)

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

PHPackages © 2026

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