PHPackages                             sysvyz/hurl - 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. sysvyz/hurl

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

sysvyz/hurl
===========

PHP7 language wrapper

1.0.0-alpha.0.4(9y ago)1362MITPHPPHP &gt;=7.0.0

Since May 27Pushed 8y ago2 watchersCompare

[ Source](https://github.com/sysvyz/hurl)[ Packagist](https://packagist.org/packages/sysvyz/hurl)[ Docs](https://github.com/sysvyz/hurl)[ RSS](/packages/sysvyz-hurl/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (4)Dependencies (2)Versions (6)Used By (2)

Hurl
====

[](#hurl)

Hurl is a data transformation framework, designed to compose complex transformations.

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

[](#installation)

You will need `composer require sysvyz/hurl`

Usage
-----

[](#usage)

Hurl is designed to build algorithms as datastructures. Each algorithm is represented by a tree. A tree is represented by its root node. Trees should be stateless (and immutable) in order to reuse them. A `Node` represents a data transformation.

### Creating Nodes

[](#creating-nodes)

A Node is basically wrapper for `function`s or `Closure`s if you like. Like functions Nodes have inputs(parameters) and a output.

```
$fromHex = Node::call(function ($data) {
    return hexdec($data);
});
var_dump($fromHex('a'));

//int(10)
```

### Build-in transformations

[](#build-in-transformations)

Nodes are transformation rules. There are several build-in php functions wrapped as Node

```
$explode = Node::explode('.');
var_dump($explode('a.b'));
//array(2) {
//  [0]=>
//  string(1) "a"
//  [1]=>
//  string(1) "b"
//}
```

### Chained transformations

[](#chained-transformations)

Nodes can be chained to perform multiple consecutive transformations

```
$chain = $explode->implode('-');
var_dump($chain('a.b'));
//string(3) "a-b"
```

### Map

[](#map)

One of the most common transformation is `array_map`. Node provides a convenient way of performing those operations. Since the `callback` function of `array_map` is nothing else than a transformation, it's obvious to use Nodes as callbacks.

```
$map = $explode->map($fromHex)->implode('.');
var_dump($map('a.b'));
//string(5) "10.11"
```

### Sort

[](#sort)

```
$sort = Node::ARRAY()->sort(function ($a,$b){
    return $a-$b;
});
var_dump($sort([2,5,3,4,1]));
//array(5) {
//  [0]=>
//  int(1)
//  [1]=>
//  int(2)
//  [2]=>
//  int(3)
//  [3]=>
//  int(4)
//  [4]=>
//  int(5)
//}
```

###  Health Score

24

—

LowBetter than 31% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~17 days

Total

4

Last Release

3635d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/26d47903d0b8f9c20ad74bfcf3b521f6aba8f94b3b25577d5015a7b82b722974?d=identicon)[mo-ba](/maintainers/mo-ba)

---

Top Contributors

[![mo-ba](https://avatars.githubusercontent.com/u/13025011?v=4)](https://github.com/mo-ba "mo-ba (36 commits)")

---

Tags

language wrapper

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sysvyz-hurl/health.svg)

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

###  Alternatives

[micc83/acf-fonticonpicker

ACF-FontIconPicker is a Fonts Icons Picker field type for the Advanced Custom Fields WordPress plugin.

469.8k](/packages/micc83-acf-fonticonpicker)[laravel-ready/license-server

License server for Laravel

1291.2k](/packages/laravel-ready-license-server)

PHPackages © 2026

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