PHPackages                             mjkhajeh/wporm-extra-casts - 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. mjkhajeh/wporm-extra-casts

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

mjkhajeh/wporm-extra-casts
==========================

Extra type casts for WPORM models, providing advanced validation and sanitization using WordPress functions.

v1.1.1(7mo ago)017MITPHPPHP &gt;=7.4

Since Sep 2Pushed 7mo agoCompare

[ Source](https://github.com/mjkhajeh/wporm-extra-casts)[ Packagist](https://packagist.org/packages/mjkhajeh/wporm-extra-casts)[ RSS](/packages/mjkhajeh-wporm-extra-casts/feed)WikiDiscussions main Synced 1mo ago

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

WPORM Extra Casts
=================

[](#wporm-extra-casts)

Extra type casts for WPORM models, providing advanced validation and sanitization using WordPress functions.

Features
--------

[](#features)

- Seamless integration with WPORM
- Uses WordPress native functions for sanitization and validation
- Supports a wide range of data types
- Extensible for custom data types

Requirements
------------

[](#requirements)

- PHP 7.4+
- WordPress 5.0+
- [WPORM](https://github.com/mjkhajeh/wporm) library

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

[](#installation)

Install via Composer:

```
composer require mjkhajeh/wporm-extra-casts

```

Supported Cast Types
--------------------

[](#supported-cast-types)

Cast TypeDescriptionWP Function UsedDateNormalizes date values to `Y-m-d` format`date_i18n`, custom logicTimeNormalizes time values to `H:i:s` format`date_i18n`, custom logicSerializedHandles PHP serialized data`maybe_serialize`, `maybe_unserialize`SlugConverts strings to URL-friendly slugs`sanitize_title`EmailValidates and normalizes email addresses`sanitize_email`URLValidates and normalizes URLs`esc_url_raw`FilePathSanitizes and normalizes file paths`sanitize_file_name`PostIDEnsures values are valid WordPress post IDs`absint`UserIDEnsures values are valid WordPress user IDs`absint`CustomEnumRestricts values to a defined set, with sanitization`sanitize_text_field`Base64Handles base64 encoding/decoding`base64_encode`, `base64_decode`MobileValidates and normalizes mobile phone numbers`sanitize_text_field`Usage
-----

[](#usage)

Add the desired cast to your WPORM model’s `$casts` property. Example:

```
use MJ\WPROM\ExtraCasts\Date;
use MJ\WPROM\ExtraCasts\Slug;

class MyModel extends Model {
    protected $casts = [
        'published_at' => Date::class,
        'post_slug'    => Slug::class,
    ];
}
```

CustomEnum Example
------------------

[](#customenum-example)

`CustomEnum` allows you to restrict a field to a set of allowed values, with WordPress sanitization:

```
use MJ\WPROM\ExtraCasts\CustomEnum;

// Define allowed values
$enum = new CustomEnum(['draft', 'pending', 'published']);

// Getting a value
$value = $enum->get('published'); // returns 'published'
$value = $enum->get('trash');     // returns null

// Setting a value
$set = $enum->set('pending');     // returns 'pending'
$set = $enum->set('unknown');     // returns null
```

You can use `CustomEnum` in your model like this:

```
class Post extends Model {
    protected $casts = [
        'status' => [CustomEnum::class, ['draft', 'pending', 'published']]
    ];
}
```

License
-------

[](#license)

MIT License © MohammadJafar Khajeh

Author
------

[](#author)

MohammadJafar Khajeh

Links
-----

[](#links)

- [WPORM](https://github.com/mjkhajeh/wporm)
- [WordPress Developer Resources](https://developer.wordpress.org/reference/)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance63

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

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.

###  Release Activity

Cadence

Every ~12 days

Total

3

Last Release

226d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3b7e4293c9f0f03906ad75a2e557157b3c12919babd31bd1e7bf27694e753011?d=identicon)[mjkhajeh](/maintainers/mjkhajeh)

---

Top Contributors

[![mjkhajeh](https://avatars.githubusercontent.com/u/81983167?v=4)](https://github.com/mjkhajeh "mjkhajeh (5 commits)")

---

Tags

eloquentormwordpresswordpress-developmentwordpress-pluginwordpress-theme

### Embed Badge

![Health badge](/badges/mjkhajeh-wporm-extra-casts/health.svg)

```
[![Health](https://phpackages.com/badges/mjkhajeh-wporm-extra-casts/health.svg)](https://phpackages.com/packages/mjkhajeh-wporm-extra-casts)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.3k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M545](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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