PHPackages                             getrix/objectmodel - 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. getrix/objectmodel

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

getrix/objectmodel
==================

ObjectModel PHP Package

1.2.0(7y ago)220[1 issues](https://github.com/digitalhitler/objectmodel/issues)MITPHPPHP &gt;=7.1.0

Since Aug 9Pushed 7y ago2 watchersCompare

[ Source](https://github.com/digitalhitler/objectmodel)[ Packagist](https://packagist.org/packages/getrix/objectmodel)[ Docs](https://github.com/digitalhitler/objectmodel)[ RSS](/packages/getrix-objectmodel/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (1)Versions (5)Used By (0)

ObjectModel
===========

[](#objectmodel)

PHP helpers to access objects and its collections in database

**Warning! This project is currently in deep private beta. Please do not use it if you care about anything good.**

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

[](#installation)

1. Add this package as a Composer dependency:

```
composer require getrix/objectmodel
```

1. Define a database callback. This is a callback function stored in a static property `$databaseCallback` of `ObjectModel` class that should return an PDO object with link to database.

Usage
-----

[](#usage)

### Quick example:

[](#quick-example)

```
use Getrix\ObjectModel;

Getrix\ObjectModel::setDB(
    new PDO("mysql:dbname=bbass;host=localhost", "user", "password"
);

final class Post extends Getrix\ObjectModel {
  protected static $table = 'Posts';
  protected static $primaryKey = 'id';

  public function __construct(array $row = null) {
    parent::__construct(self::$table, self::$primaryKey,
      [
        "id" => [
          "type" => "integer"
        ],
        "title" => [
          "type" => "string"
        ],
        "text" => [
          "type" => "string"
        ]
      ], $row );
  }
}

$post = Post::getById(1);

var_dump($post);
```

### Field rules

[](#field-rules)

Any object handled with ObjectModel should have a schema that describes validation and transformation rules for each of data field in database. Schema should be defined in object constructor, for ex.:

```
[
    "id" => [
      "type" => "integer"
    ],
    "title" => [
      "type" => "string"
    ],
    "text" => [
      "type" => "string"
    ]
]
```

### Schema field properties

[](#schema-field-properties)

PropertyDescriptionValuesDefault`type`Type of fieldSee “Schema field types” below`string``required`Is this field is required or not`true` or `false``false``default`Default value for the field that will be set in case of field value is nullany-`fn`Field validator/transformation callback function. Will be used instead of default type validation rules`function(`*ObjectField* $schema`,`*mixed* `$value,`*boolean* `$reverse)`-`populate`Used to define population class nameSee “Populating field values” below-### Schema field types

[](#schema-field-types)

TypeDescriptionDirect action (from DB)Reverse action (to DB)`string`Plain stringApplies `stripslashes` default PHP function after the `htmlspecialchars_decode`Applies `addslashes` after `htmlspecialchars``integer`Number`associative`Associative arrayTranslates stored value to corresponding value in `values` field property by its keyStores key value of corresponding entry in `values` associative array of the field Version history
---------------

[](#version-history)

### 1.2.0

[](#120)

*Released 17th November, 2018*

- **IMPROVEMENT** Implemented custom field types base class (`ObjectFieldType`),
- **IMPROVEMENT** Implemented `extractField` method for collections.
- **TINY CHANGE** Moved all exception files to `src/exceptions` directory.

### 1.1.1

[](#111)

*Released 7th October, 2018*

- **FIX** Improved doc comments to be more recognizable by various IDEs.
- **IMPROVEMENT** Added "associative" type of `ObjectField` (see "Schema field types").

### 1.1.0

[](#110)

*Released 26th August, 2018*

- **IMPROVEMENT** Lots of code refactoring and humanizations
- **IMPROVEMENT** `ObjectCollection.php` has been heavily refactored.
- **FIX** No more bug with `is_subclass_of` check in `ObjectCollection::fromArray`static method.
- **NEW** Introduced the `ObjectModelException.php` with exception class that is used from now in whole library context.

### 1.0.2

[](#102)

*Released 10th August, 2018*

- **FIX** Fixed bug with `ObjectModel->getById()` method related to name of primary key field.
- **FIX** Fixed bug with `ObjectModel->getById()` method related to unused `orderBy `argument (because of method is designed for only one item to be returned)
- **IMPROVEMENT** Documented all the methods in `ObjectModel.php`
- **IMPROVEMENT** Rewritten `ObjectModel::getOne` method that now based on commonly used `ObjectModel::simpleQuery` method. Usage of `getOne` method is not changed.
- **IMPROVEMENT** Cleaned up the code in `ObjectModel.php`

### 1.0.1

[](#101)

*Released 9th August, 2018*

- **UPDATE** Separated default and `string` field validation type
- **IMPROVEMENT** Updated and improved readme
- **IMPROVEMENT** Updated `ObjectModel->toArray()`: added internal collections serialization flag
- **BREAKING** Changed logic of providing the database connection: now you should use `ObjectModel::setDB` method.

### 1.0.0

[](#100)

*Released 9th August, 2018*

- Initial release

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity61

Established project with proven stability

 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 ~33 days

Total

4

Last Release

2782d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1048856?v=4)[Sergey S Petrenko](/maintainers/digitalhitler)[@digitalhitler](https://github.com/digitalhitler)

---

Top Contributors

[![digitalhitler](https://avatars.githubusercontent.com/u/1048856?v=4)](https://github.com/digitalhitler "digitalhitler (10 commits)")

### Embed Badge

![Health badge](/badges/getrix-objectmodel/health.svg)

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

PHPackages © 2026

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