PHPackages                             codes50/validation - 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. [Validation &amp; Sanitization](/categories/validation)
4. /
5. codes50/validation

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

codes50/validation
==================

Validation Service

1.3(6y ago)22961MITPHPPHP &gt;=7.2

Since Dec 10Pushed 6y ago1 watchersCompare

[ Source](https://github.com/CodeS50/validation)[ Packagist](https://packagist.org/packages/codes50/validation)[ Docs](https://github.com/CodeS50/validation)[ RSS](/packages/codes50-validation/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (4)DependenciesVersions (6)Used By (1)

PHP Validation Service
======================

[](#php-validation-service)

[![Latest Version](https://camo.githubusercontent.com/c99b75243e7b30874fd73a5058b884a4440f2bc8acc220b0b95debf55e6025d3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f64657335302f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/codes50/validation)[![Packagist](https://camo.githubusercontent.com/a77d387bfcdc887046a7ccfbc7827cd2a57fcaa691f7e9f723e8fbb96977805a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f636f64657335302f76616c69646174696f6e2e737667)](https://packagist.org/packages/codes50/validation)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

Requires
--------

[](#requires)

- php: &gt;=7.2

Install
-------

[](#install)

Install latest version using [composer](https://getcomposer.org/).

```
$ composer require codes50/validation
```

Usage
-----

[](#usage)

- Multiple Usage

```
use Codes50\Validator;

$data = [
    "int" => 10,
    "double" => 10.5,
    "string" => "asd",
    "email" => "kadiryolalan@gmail.com",
    "boolean" => false,
    "url" => "https://www.linkedin.com/in/kadir-yolalan-722538164/",
    "domain" => "github.com",
    "ip" => "192.168.1.1",
    "ipv4" => "192.168.1.1",
    "ipv6" => "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
    "mac" => "20:01:0d:b8:85:a3",
    "weekpassword" => "1A2dh_",
    "select" => "1",
    "date" => "13-12-2019 00:00:00",
    "subtest" => [
        "sub1" => 111,
        "sub2" => [
            "sub3" => "a"
        ]
    ]
];
$rules = [
    "int" => [
        Validator::ATTR_TYPE => Validator::TYPE_INT,
        Validator::ATTR_REQUIRED => true,
        Validator::ATTR_MAX => 100,
        Validator::ATTR_MIN => 1
    ],
    "double" => [
        Validator::ATTR_TYPE => Validator::TYPE_DOUBLE,
        Validator::ATTR_REQUIRED => true,
        Validator::ATTR_MAX => 100,
        Validator::ATTR_MIN => 1
    ],
    "string" => [
        Validator::ATTR_TYPE => Validator::TYPE_STRING,
        Validator::ATTR_REQUIRED => true,
        Validator::ATTR_MAX_LENGTH => 3,
        Validator::ATTR_MIN_LENGTH => 1
    ],
    "email" => [
        Validator::ATTR_TYPE => Validator::TYPE_EMAIL,
        Validator::ATTR_REQUIRED => true
    ],
    "boolean" => [
        Validator::ATTR_TYPE => Validator::TYPE_BOOLEAN,
        Validator::ATTR_REQUIRED => true
    ],
    "url" => [
        Validator::ATTR_TYPE => Validator::TYPE_URL,
        Validator::ATTR_REQUIRED => true
    ],
    "domain" => [
        Validator::ATTR_TYPE => Validator::TYPE_DOMAIN,
        Validator::ATTR_REQUIRED => true
    ],
    "ip" => [
        Validator::ATTR_TYPE => Validator::TYPE_IP,
        Validator::ATTR_REQUIRED => true
    ],
    "ipv4" => [
        Validator::ATTR_TYPE => Validator::TYPE_IPV4,
        Validator::ATTR_REQUIRED => true
    ],
    "ipv6" => [
        Validator::ATTR_TYPE => Validator::TYPE_IPV6,
        Validator::ATTR_REQUIRED => true
    ],
    "mac" => [
        Validator::ATTR_TYPE => Validator::TYPE_MAC,
        Validator::ATTR_REQUIRED => true
    ],
    "weekpassword" => [
        Validator::ATTR_TYPE => Validator::TYPE_WEAK_PASSWD,
        Validator::ATTR_REQUIRED => true
    ],
    "select" => [
        Validator::ATTR_TYPE => Validator::TYPE_SELECT,
        Validator::ATTR_REQUIRED => true,
        Validator::ATTR_OPTIONS => [
            1,
            2,
            3,
            4
        ]
    ],
    "date" => [
        Validator::ATTR_TYPE => Validator::TYPE_DATE,
        Validator::ATTR_REQUIRED => true
    ],
    "subtest.sub1" => [
        Validator::ATTR_TYPE => Validator::TYPE_INT,
        Validator::ATTR_REQUIRED => true
    ]
];

$validate = Validator::make($data, $rules);
var_dump($validate->validate());
print_r($validate->error->all());
```

**print:**

```
bool(true)
Array
(
)

```

- Single Usage

```
use Codes50\Validator;
$validate = New Validator();
$single = [
    Validator::ATTR_TYPE => Validator::TYPE_STRING,
    Validator::ATTR_REQUIRED => true,
    Validator::ATTR_MAX_LENGTH => 3
];
if($validate->singleValid($single, "test") !== true) {
    $error = $validate->singleValid($single, "test");
    echo $error;
}
```

**print:**

```
max_length

```

Customize Usage
---------------

[](#customize-usage)

need to extend it with the "CoreValidator" class.

```
use Codes50\Core\CoreValidator;

class CustomValidator extends CoreValidator
{
    public function __construct(array $data = [], array $rules = [])
    {
        parent::__construct($data, $rules);
    }
}
```

- Add Custom Attribute Plugin:

```
use Codes50\Core\CoreValidator;

class Validator extends CoreValidator
{
    public const ATTR_TEST = 'attr_test';

    public function __construct(array $data = [], array $rules = [])
    {
        parent::__construct($data, $rules);
        $this->registerAttrPlugin(self::ATTR_TEST, "checkAttrTest");
    }

    /**
     * @param $data
     * @return bool
     */
    protected function checkAttrTest($data): bool
    {
        $this->_error = "testmessage";
        return false;
    }
}
```

- Add Custom Type Plugin:

```
use Codes50\Core\CoreValidator;

class Validator extends CoreValidator
{
    public const TYPE_TEST = 'type_test';
    public const ATTR_TEST = 'attr_test';

    public function __construct(array $data = [], array $rules = [])
    {
        parent::__construct($data, $rules);
        $this->registerTypePlugin(self::TYPE_TEST, "checkTest", [self::ATTR_TEST, self::ATTR_MIN_LENGTH, self::ATTR_MAX_LENGTH]);
        $this->registerAttrPlugin(self::ATTR_TEST, "checkAttrTest");
    }

    /**
     * @param $data
     * @return bool
     */
    protected function checkTest($data): bool
    {
        // $this->_error = "testmessage";
        return true;
    }

    /**
     * @param $data
     * @return bool
     */
    protected function checkAttrTest($data): bool
    {
        $this->_error = "testmessage";
        return false;
    }
}
```

- Language:

```
use Codes50\Core\CoreValidator;

class Validator extends CoreValidator
{
    public function __construct(array $data = [], array $rules = [])
    {
        parent::__construct($data, $rules);
        // $this->setLanguage("en");
        // $this->setLanguage("tr");
        // $this->setLanguage("{your_directory}/custom_language.php", true);
    }
}
```

custom\_language.php Example:

```
return [
    "plugin_method_not_avaliable" => "Extension method not found for defined control type.",
    "plugin_not_avaliable" => "No defined control type!",
    "is_required" => "Required field! Please do not leave blank.",
    "cannot_be_null" => "Invalid Data Type! This field cannot have a NULL value.",
    "number_max_exceed" => "Enter a smaller number.",
    "number_min_exceed" => "Enter a larger number.",
    "length_max_exceed" => "You have exceeded the number of characters!",
    "length_min_exceed" => "Insufficient Number of Characters",
    "invalid_regexp" => "This field does not match.",
    "invalid_int" => "This field can only be a number.",
    "invalid_double" => "This field can only receive numeric or decimal data.",
    "invalid_email" => "Invalid email address",
    "invalid_boolean" => "Invalid data type",
    "invalid_url" => "Invalid URL",
    "invalid_domain" => "Invalid domain address",
    "invalid_ip" => "Invalid IP address",
    "invalid_ipv4" => "Invalid IP address. Must only be of type ipv4.",
    "invalid_ipv6" => "Invalid IP address. Must only be of type ipv6.",
    "invalid_mac" => "Invalid MAC address",
    "invalid_weak_password" => "Invalid password. Your password must contain at least one uppercase letter, a lowercase letter, a number, and a special character.",
    "invalid_date" => "Invalid data. This field can only be date.",
    "invalid_option" => "Invalid data type"
];
```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity56

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

Total

4

Last Release

2345d ago

Major Versions

0.1 → 1.1.12019-12-11

### Community

Maintainers

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

---

Top Contributors

[![CodeS50](https://avatars.githubusercontent.com/u/35570038?v=4)](https://github.com/CodeS50 "CodeS50 (19 commits)")

### Embed Badge

![Health badge](/badges/codes50-validation/health.svg)

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

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[bensampo/laravel-enum

Simple, extensible and powerful enumeration implementation for Laravel.

2.0k15.9M104](/packages/bensampo-laravel-enum)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)[crazybooot/base64-validation

Laravel validators for base64 encoded files

1341.9M8](/packages/crazybooot-base64-validation)

PHPackages © 2026

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