PHPackages                             oihana/php-openedge - 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. oihana/php-openedge

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

oihana/php-openedge
===================

Composable PHP toolkit for the Progress OpenEdge SQL database via ODBC. Bundles a functional query builder (predicates, casts, string/numeric/date functions, CASE expressions), document/edge models composed by traits, PSR-7 CRUD controllers, and Symfony Console commands. Built for read-heavy ERP integrations.

015PHPCI passing

Since Jul 11Pushed 1w agoCompare

[ Source](https://github.com/BcommeBois/oihana-php-openedge)[ Packagist](https://packagist.org/packages/oihana/php-openedge)[ RSS](/packages/oihana-php-openedge/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Oihana PHP OpenEdge
===================

[](#oihana-php-openedge)

[![Oihana PHP OpenEdge](https://raw.githubusercontent.com/BcommeBois/oihana-php-openedge/main/assets/images/oihana-php-openedge-logo-inline-512x160.png)](https://raw.githubusercontent.com/BcommeBois/oihana-php-openedge/main/assets/images/oihana-php-openedge-logo-inline-512x160.png)

Composable PHP toolkit for the [Progress OpenEdge](https://www.progress.com/openedge) SQL database, accessed via ODBC. Part of the **Oihana PHP** ecosystem, this package bundles a functional query builder (predicates, casts, string/numeric/date functions, CASE expressions), document/edge models composed by traits, PSR-7 CRUD controllers, and Symfony Console commands — everything you need to build a read-heavy ERP integration end-to-end.

[![Latest Version](https://camo.githubusercontent.com/d1f7e11ca3b9064e2ccca8d56dfbe837afa08387cfd2ccdcd556a9678a24876a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6f6968616e612f7068702d6f70656e656467652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/oihana/php-openedge)[![Total Downloads](https://camo.githubusercontent.com/4a9a5bdafcd6b847649eb2291d49646efe7668faec2aa160025cffc3a04518df/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6f6968616e612f7068702d6f70656e656467652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/oihana/php-openedge)[![License](https://camo.githubusercontent.com/57fe870d5975189239e1b3355422dedd08d37184b57179dca06c08ee921712c9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6f6968616e612f7068702d6f70656e656467652e7376673f7374796c653d666c61742d737175617265)](LICENSE)

📚 Documentation
---------------

[](#-documentation)

Full API reference (generated with phpDocumentor): `https://bcommebois.github.io/oihana-php-openedge`

User guides (FR + EN) live under [`wiki/`](wiki/).

📦 Installation
--------------

[](#-installation)

Requires [PHP 8.4+](https://php.net/releases/) with the `ext-pdo` extension, and the [Progress DataDirect OpenEdge ODBC driver](https://www.progress.com/datadirect-connectors) installed on the host running the application. Install via [Composer](https://getcomposer.org/):

```
composer require oihana/php-openedge
```

✨ What you can do
-----------------

[](#-what-you-can-do)

- **Build OpenEdge SQL queries** with a fully functional API — column expressions, value/literal expressions, ORDER BY / LIMIT / GROUP BY, search conditions, predicates (basic, between, exists, in, like, null, quantified) — without ever concatenating strings.
- **Cover every OpenEdge SQL function** — string (`concat`, `substring`, `lpad`, `proArrayEscape`, ...), numeric (`abs`, `round`, `power`, `mod`, ...), date (`now`, `sysTimestamp`, ...), conditional (`coalesce`, `ifNull`, `nvl`, ...), conversion (`toChar`, `toDate`, `toNumber`, ...), and the full ODBC cast catalogue (`castBIGINT`, `castVARCHAR`, `castTIMESTAMP`, ...).
- **Compose CASE expressions** declaratively — `whenThenExpression(...)`, `elseExpression(...)`, no string templates.
- **Apply value mutators** through the `alters/` pipeline — `alterDate`, `alterKey`, `alterNumeric`, `alterString`, `alterConditional`, `alterConversion`.
- **Persist and load documents** through trait-composed models — `Documents`, `DocumentsList`, `DocumentsGet`, `DocumentsCount`, `DocumentsStream` etc. — with `bindExpression` placeholders and `SORTABLE` whitelisting baked in.
- **Plug controllers** into any [Slim](https://www.slimframework.com/)-compatible PSR-15 stack via `DocumentsController` (list, get, count) — read-only by default to match the typical ERP integration profile.

### Under the hood

[](#under-the-hood)

- A consistent set of typed enums and constants — `OpenEdgeFunctionType`, `OpenEdgeOperator`, etc. — no magic strings anywhere.
- Pure functional helpers, registered through Composer `autoload.files` so they are always available without `use` boilerplate.
- PDO-based — uses the standard `ext-pdo` + ODBC driver path, so it works the same way on Linux (DataDirect driver) and Windows (Progress ODBC driver) hosts.
- Schema.org-friendly — models extend `org\schema\Thing` from [`oihana/php-schema`](https://github.com/BcommeBois/oihana-php-schema), so JSON-LD output is natural.

✅ Running tests
---------------

[](#-running-tests)

Run all tests:

```
composer test
```

Run a specific test file:

```
composer test ./tests/oihana/openedge/db/helpers/functions/casts/CastVarCharTest.php
```

The unit tests cover the pure functional helpers — they do **not** require an ODBC driver or a live OpenEdge server. End-to-end smoke tests against a real OpenEdge instance live in the consuming application.

🛠️ Generate the documentation
-----------------------------

[](#️-generate-the-documentation)

We use [phpDocumentor](https://phpdoc.org/) to generate documentation into the `./docs` folder.

```
composer doc
```

🧾 License
---------

[](#-license)

Licensed under the [Mozilla Public License 2.0 (MPL‑2.0)](https://www.mozilla.org/en-US/MPL/2.0/).

👤 About the author
------------------

[](#-about-the-author)

- Author: Marc ALCARAZ (aka eKameleon)
- Email: `marc@ooop.fr`
- Website: `https://www.ooop.fr`

🔗 Related packages
------------------

[](#-related-packages)

PackageDescription[oihana/php-arango](https://github.com/BcommeBois/oihana-php-arango)Composable toolkit for ArangoDB — document/edge models, AQL helpers, controllers.[oihana/php-auth](https://github.com/BcommeBois/oihana-php-auth)Casbin RBAC + JWT/OIDC authorization toolkit.[oihana/php-commands](https://github.com/BcommeBois/oihana-php-commands)Symfony Console kernel and reusable command traits.[oihana/php-core](https://github.com/BcommeBois/oihana-php-core)Core helpers and utilities shared across the ecosystem.[oihana/php-enums](https://github.com/BcommeBois/oihana-php-enums)Typed constants and enums — no more magic strings.[oihana/php-exceptions](https://github.com/BcommeBois/oihana-php-exceptions)Framework exceptions with consistent semantics.[oihana/php-http](https://github.com/BcommeBois/oihana-php-http)HTTP helpers — client IP, cookies, route patterns.[oihana/php-reflect](https://github.com/BcommeBois/oihana-php-reflect)Reflection and object hydration utilities.[oihana/php-schema](https://github.com/BcommeBois/oihana-php-schema)Schema.org constants and vocabulary.[oihana/php-system](https://github.com/BcommeBois/oihana-php-system)Framework helpers — controllers, models, request handling.

###  Health Score

23

—

LowBetter than 25% of packages

Maintenance64

Regular maintenance activity

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 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.

### Community

Maintainers

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

---

Top Contributors

[![ekameleon](https://avatars.githubusercontent.com/u/749032?v=4)](https://github.com/ekameleon "ekameleon (27 commits)")

### Embed Badge

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

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

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k117.2M118](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

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