Skip to content

Commit 765b180

Browse files
authored
Merge pull request #56 from bim-g/v3
V3-beta
2 parents fd25249 + 16e96b2 commit 765b180

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1369
-1001
lines changed

.idea/wepesi_validation.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.phpunit.result.cache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":1,"defects":{"Test\\Schema\\SCHStringTest::testStringObject":4,"Test\\Schema\\SCHStringTest::testStringObjectIsNotKey":3,"Test\\Schema\\SCHStringTest::testStringEmailKey":3,"Test\\Schema\\SCHStringTest::testStringObjectIsKey":4,"Test\\Schema\\StringSchemaTest::testStringURLKey":4,"Test\\Schema\\StringSchemaTest::testStringMatchKey":4,"Test\\Schema\\StringSchemaTest::testStringMinimumKey":4,"Test\\Schema\\NumberSchemaTest::testStringIsObject":4,"Test\\Schema\\NumberSchemaTest::testRequiredKey":4,"Test\\Schema\\DateSchemaTest::testDateTodayKey":4,"Test\\Schema\\BooleanSchemaTest::testBooleanIsRequireddKey":4,"Test\\Script\\StringValidationTest::testStringIsObject":4,"Test\\Script\\StringValidationTest::testStringObjectException":4,"Test\\Script\\StringValidationTest::testException":3,"Test\\Script\\StringValidationTest::testStringMin":3,"Test\\Script\\StringValidationTest::testStringMaxError":4,"Test\\Script\\StringValidationTest::testStringMaxSuccess":3,"Test\\Script\\StringValidationTest::testStringValidationSourceDataException":4,"Test\\Script\\StringValidationTest::testStringValidationSchemaException":4,"Test\\Script\\StringValidationTest::testStringMinError":4,"Test\\Script\\StringValidationTest::testStringMinSuccess":3,"Test\\Script\\StringValidationTest::testStringEmailError":3,"Test\\Script\\StringValidationTest::testStringURLSuccess":4,"Test\\Script\\StringValidationTest::testStringRequiredSuccess":4,"Test\\Script\\StringValidationTest::testStringRequiredErrors":3,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknown":4,"Test\\Script\\StringValidationTest::testStringMatchSuccess":3,"Test\\Script\\StringValidationTest::testStringMatchErrors":3,"Test\\Schema\\StringSchemaTest::testStringIsObject":4,"Test\\Schema\\StringSchemaTest::testStringObjectIsKey":4,"Test\\Schema\\StringSchemaTest::testStringEmailKey":4,"Test\\Schema\\StringSchemaTest::testStringMaximumKey":4,"Test\\Schema\\DateSchemaTest::testStringIsObject":4,"Test\\Schema\\DateSchemaTest::testStringObjectIsKey":4,"Test\\Schema\\DateSchemaTest::testDateNowKey":4,"Test\\Schema\\NumberSchemaTest::testStringObjectIsKey":4,"Test\\Schema\\NumberSchemaTest::testNumberPositiveKey":4,"Test\\Schema\\BooleanSchemaTest::testBooleanIsObject":4,"Test\\Schema\\BooleanSchemaTest::testStringObjectIsKey":4,"Test\\Schema\\BooleanSchemaTest::testBooleanIsValidKey":3,"Test\\ValidationTest::testValidationStringObject":3,"Test\\ValidationTest::testValidationStringErrorObject":3},"times":{"Test\\Schema\\SCHStringTest::testStringObject":0.021,"Test\\Schema\\SCHStringTest::testStringObjectIsKey":0,"Test\\Schema\\SCHStringTest::testStringObjectIsNotKey":0.01,"Test\\Schema\\SCHStringTest::testStringEmailKey":0.001,"Test\\Schema\\SCHStringTest::testStringIsObject":0.008,"Test\\Schema\\StringSchemaTest::testStringIsObject":0.005,"Test\\Schema\\StringSchemaTest::testStringObjectIsKey":0,"Test\\Schema\\StringSchemaTest::testStringEmailKey":0,"Test\\Schema\\StringSchemaTest::testStringURLKey":0,"Test\\Schema\\StringSchemaTest::testStringMatchKey":0,"Test\\Schema\\StringSchemaTest::testStringMinimumKey":0,"Test\\Schema\\StringSchemaTest::testStringMaximumKey":0,"Test\\Schema\\NumberSchemaTest::testStringIsObject":0.005,"Test\\Schema\\NumberSchemaTest::testStringObjectIsKey":0,"Test\\Schema\\NumberSchemaTest::testRequiredKey":0,"Test\\Schema\\NumberSchemaTest::testNumberPositiveKey":0,"Test\\Schema\\DateSchemaTest::testStringIsObject":0.006,"Test\\Schema\\DateSchemaTest::testStringObjectIsKey":0,"Test\\Schema\\DateSchemaTest::testDateNowKey":0,"Test\\Schema\\DateSchemaTest::testDateTodayKey":0,"Test\\Schema\\BooleanSchemaTest::testBooleanIsObject":0.005,"Test\\Schema\\BooleanSchemaTest::testStringObjectIsKey":0,"Test\\Schema\\BooleanSchemaTest::testBooleanIsRequireddKey":0,"Test\\Schema\\BooleanSchemaTest::testBooleanIsValidKey":0,"Test\\Script\\StringValidationTest::testStringIsObject":0,"Test\\Script\\StringValidationTest::testStringObjectException":0.006,"Test\\Script\\StringValidationTest::testException":0.007,"Test\\Script\\StringValidationTest::testStringMin":0.001,"Test\\Script\\StringValidationTest::testStringValidationException":0.006,"Test\\Script\\StringValidationTest::testStringValidationSchemaException":0,"Test\\Script\\StringValidationTest::testStringValidationSourceDataException":0.007,"Test\\Script\\StringValidationTest::testStringMinError":0,"Test\\Script\\StringValidationTest::testStringMinSuccess":0,"Test\\Script\\StringValidationTest::testStringMaxError":0,"Test\\Script\\StringValidationTest::testStringMaxSuccess":0,"Test\\Script\\StringValidationTest::testStringEmailError":0.001,"Test\\Script\\StringValidationTest::testStringEmailSuccess":0,"Test\\Script\\StringValidationTest::testStringUrlError":0.008,"Test\\Script\\StringValidationTest::testStringURLError":0,"Test\\Script\\StringValidationTest::testStringURLSuccess":0.008,"Test\\Script\\StringValidationTest::testStringRequiredSuccess":0.001,"Test\\Script\\StringValidationTest::testStringRequiredErrors":0,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknow":0,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknown":0,"Test\\Script\\StringValidationTest::testStringMatchErrors":0,"Test\\Script\\StringValidationTest::testStringMatchSuccess":0,"Test\\Script\\StringValidationTest::testStringValidationFieldNotDefinedException":0,"Test\\ValidationTest::testValidationObject":0.016,"Test\\ValidationTest::testValidationStringObject":0.005,"Test\\ValidationTest::testValidationStringErrorObject":0.009}}
1+
{"version":1,"defects":{"Test\\Schema\\SCHStringTest::testStringObject":4,"Test\\Schema\\SCHStringTest::testStringObjectIsNotKey":3,"Test\\Schema\\SCHStringTest::testStringEmailKey":3,"Test\\Schema\\SCHStringTest::testStringObjectIsKey":4,"Test\\Schema\\StringSchemaTest::testStringURLKey":3,"Test\\Schema\\StringSchemaTest::testStringMatchKey":3,"Test\\Schema\\StringSchemaTest::testStringMinimumKey":3,"Test\\Schema\\NumberSchemaTest::testStringIsObject":4,"Test\\Schema\\NumberSchemaTest::testRequiredKey":3,"Test\\Schema\\DateSchemaTest::testDateTodayKey":3,"Test\\Schema\\BooleanSchemaTest::testBooleanIsRequireddKey":3,"Test\\Script\\StringValidationTest::testStringIsObject":4,"Test\\Script\\StringValidationTest::testStringObjectException":4,"Test\\Script\\StringValidationTest::testException":3,"Test\\Script\\StringValidationTest::testStringMin":3,"Test\\Script\\StringValidationTest::testStringMaxError":4,"Test\\Script\\StringValidationTest::testStringMaxSuccess":4,"Test\\Script\\StringValidationTest::testStringValidationSourceDataException":4,"Test\\Script\\StringValidationTest::testStringValidationSchemaException":4,"Test\\Script\\StringValidationTest::testStringMinError":4,"Test\\Script\\StringValidationTest::testStringMinSuccess":4,"Test\\Script\\StringValidationTest::testStringEmailError":4,"Test\\Script\\StringValidationTest::testStringURLSuccess":4,"Test\\Script\\StringValidationTest::testStringRequiredSuccess":4,"Test\\Script\\StringValidationTest::testStringRequiredErrors":4,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknown":4,"Test\\Script\\StringValidationTest::testStringMatchSuccess":4,"Test\\Script\\StringValidationTest::testStringMatchErrors":4,"Test\\Schema\\StringSchemaTest::testStringIsObject":4,"Test\\Schema\\StringSchemaTest::testStringObjectIsKey":3,"Test\\Schema\\StringSchemaTest::testStringEmailKey":3,"Test\\Schema\\StringSchemaTest::testStringMaximumKey":3,"Test\\Schema\\DateSchemaTest::testStringIsObject":4,"Test\\Schema\\DateSchemaTest::testStringObjectIsKey":3,"Test\\Schema\\DateSchemaTest::testDateNowKey":3,"Test\\Schema\\NumberSchemaTest::testStringObjectIsKey":3,"Test\\Schema\\NumberSchemaTest::testNumberPositiveKey":3,"Test\\Schema\\BooleanSchemaTest::testBooleanIsObject":4,"Test\\Schema\\BooleanSchemaTest::testStringObjectIsKey":3,"Test\\Schema\\BooleanSchemaTest::testBooleanIsValidKey":3,"Test\\ValidationTest::testValidationStringObject":3,"Test\\ValidationTest::testValidationStringErrorObject":3,"Test\\Script\\StringValidationTest::testStringValidationFieldNotDefinedException":4,"Test\\Script\\StringValidationTest::testStringEmailSuccess":4,"Test\\Script\\StringValidationTest::testStringURLError":4,"Test\\SchemaTest::testSchemaStringObject":3,"Test\\SchemaTest::testSchemaNumberObject":3,"Test\\SchemaTest::testSchemaDateObject":3},"times":{"Test\\Schema\\SCHStringTest::testStringObject":0.021,"Test\\Schema\\SCHStringTest::testStringObjectIsKey":0,"Test\\Schema\\SCHStringTest::testStringObjectIsNotKey":0.01,"Test\\Schema\\SCHStringTest::testStringEmailKey":0.001,"Test\\Schema\\SCHStringTest::testStringIsObject":0.008,"Test\\Schema\\StringSchemaTest::testStringIsObject":0.007,"Test\\Schema\\StringSchemaTest::testStringObjectIsKey":0.001,"Test\\Schema\\StringSchemaTest::testStringEmailKey":0.001,"Test\\Schema\\StringSchemaTest::testStringURLKey":0,"Test\\Schema\\StringSchemaTest::testStringMatchKey":0,"Test\\Schema\\StringSchemaTest::testStringMinimumKey":0,"Test\\Schema\\StringSchemaTest::testStringMaximumKey":0,"Test\\Schema\\NumberSchemaTest::testStringIsObject":0.007,"Test\\Schema\\NumberSchemaTest::testStringObjectIsKey":0,"Test\\Schema\\NumberSchemaTest::testRequiredKey":0.001,"Test\\Schema\\NumberSchemaTest::testNumberPositiveKey":0,"Test\\Schema\\DateSchemaTest::testStringIsObject":0.009,"Test\\Schema\\DateSchemaTest::testStringObjectIsKey":0.008,"Test\\Schema\\DateSchemaTest::testDateNowKey":0.001,"Test\\Schema\\DateSchemaTest::testDateTodayKey":0,"Test\\Schema\\BooleanSchemaTest::testBooleanIsObject":0.007,"Test\\Schema\\BooleanSchemaTest::testStringObjectIsKey":0.001,"Test\\Schema\\BooleanSchemaTest::testBooleanIsRequireddKey":0.001,"Test\\Schema\\BooleanSchemaTest::testBooleanIsValidKey":0,"Test\\Script\\StringValidationTest::testStringIsObject":0.001,"Test\\Script\\StringValidationTest::testStringObjectException":0.006,"Test\\Script\\StringValidationTest::testException":0.007,"Test\\Script\\StringValidationTest::testStringMin":0.001,"Test\\Script\\StringValidationTest::testStringValidationException":0.006,"Test\\Script\\StringValidationTest::testStringValidationSchemaException":0.001,"Test\\Script\\StringValidationTest::testStringValidationSourceDataException":0.076,"Test\\Script\\StringValidationTest::testStringMinError":0.001,"Test\\Script\\StringValidationTest::testStringMinSuccess":0.001,"Test\\Script\\StringValidationTest::testStringMaxError":0.001,"Test\\Script\\StringValidationTest::testStringMaxSuccess":0.001,"Test\\Script\\StringValidationTest::testStringEmailError":0.001,"Test\\Script\\StringValidationTest::testStringEmailSuccess":0.001,"Test\\Script\\StringValidationTest::testStringUrlError":0.008,"Test\\Script\\StringValidationTest::testStringURLError":0.001,"Test\\Script\\StringValidationTest::testStringURLSuccess":0.001,"Test\\Script\\StringValidationTest::testStringRequiredSuccess":0.001,"Test\\Script\\StringValidationTest::testStringRequiredErrors":0.001,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknow":0,"Test\\Script\\StringValidationTest::testStringRequiredErrorsUnknown":0.001,"Test\\Script\\StringValidationTest::testStringMatchErrors":0.001,"Test\\Script\\StringValidationTest::testStringMatchSuccess":0.001,"Test\\Script\\StringValidationTest::testStringValidationFieldNotDefinedException":0.001,"Test\\ValidationTest::testValidationObject":0.016,"Test\\ValidationTest::testValidationStringObject":0.005,"Test\\ValidationTest::testValidationStringErrorObject":0.262,"Test\\SchemaTest::testSchemaObject":0.008,"Test\\SchemaTest::testSchemaStringObject":0.002,"Test\\SchemaTest::testSchemaStringErrorObject":0.003,"Test\\SchemaTest::testSchemaNumberObject":0.007,"Test\\SchemaTest::testSchemaNumberErrorObject":0.011,"Test\\SchemaTest::testSchemaDateErrorObject":0.012,"Test\\SchemaTest::testSchemaDateObject":0.007}}

README.md

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ this module will help to do your own input validation from http request `POST` o
33

44
# INTEGRATION
55
The integration is the simple thing to do.
6-
First you neeed to create a new instance of `Validate` whitch will be use to do our validation.
6+
First you need to define the rule of the input data, and easy way to do so is by using a schema model which help hundle all of the process,
7+
then create an instance of `Validate` which will help validate data input according to rules already defined.
78
While have the instance of validation, you can access `check` method, with take two parameters, the `source` and `rules`;
89
```php
9-
$valid=new Validate($source);
10+
$valid = new \Wepesi\App\Validate();
11+
$schema = new \Wepesi\App\Schema();
12+
$source = [];
13+
$rules = ["name" => $schema->string()->min(3)->max(5)->generate()];
1014
$valid->check($source,$rules);
1115
```
1216
* `source`
@@ -28,24 +32,27 @@ different method are now available according to you need.
2832
now you can validate your keys according to a specify type witch are:
2933
- string
3034
- number
31-
- ...
35+
- date,
36+
- boolean
37+
- file
3238

3339
```php
3440
// rules
3541
$rules=[
36-
"email"=>$valid->string("name")->email()->min(9)->max(50)->required()->check(),
37-
"year"=>$valid->number("year")->email()->min(35)->max(60)->required()->check()
42+
"email"=>$schema->string()->email()->min(9)->max(50)->required()->generate(),
43+
"year"=>$schema->number()->email()->min(35)->max(60)->required()->generate()
3844
];
3945
```
4046
in the example bellow, for the first rule
4147
```php
42-
"email"=>$valid->string("name")->email()->min(9)->max(50)->required()->check()
48+
"email"=>$schema->string()->email()->min(9)->max(50)->required()->generate()
4349

4450
// check `email` keys should be a:
4551
// - string: type of the value to be check should be a string
4652
// - email: that string should be a email
4753
// - min:9=> the email should have minimum caracters 9 caracter
48-
// - min:9=> the email should have maximum caracters should exid 50 caracters
54+
// - max:50=> the email should have maximum caracters should exid 50 caracters
55+
// - required=> it will no be empty
4956
```
5057

5158
`STRING` method allow to validation:
@@ -65,12 +72,13 @@ In the example bellow, you can see a complete procured on how to validate data-s
6572
"link"=>"https://github.com/bim-g/wepesi_validation/",
6673
"age"=>1
6774
];
68-
$valid=new Validate($source);
75+
$valid = new \Wepesi\App\Validate();
76+
$schema = new \Wepesi\App\Schema();
6977
$rules=[
70-
"name"=>$validate->string("name")->required()->min(3)->max(30)->check(),
71-
"email"=>$validate->string("email")->required()->min(3)->max(60)->email()->check(),
72-
"link"=>$validate->string("link")->required()->min(3)->max(60)->url()->check(),
73-
"age"=>$validate->number("age")->required()->positive()->check()
78+
"name"=>$schema->string()->required()->min(3)->max(30)->generate(),
79+
"email"=>$schema->string()->required()->min(3)->max(60)->email()->generate(),
80+
"link"=>$schema->string()->required()->min(3)->max(60)->url()->generate(),
81+
"age"=>$schema->number()->required()->positive()->generate()
7482
];
7583

7684
$valid->check($source,$rules);

example/boolean.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
6+
$validate = new \Wepesi\App\Validate();
7+
$schema = new \Wepesi\App\Schema();
8+
9+
$data_source = [
10+
'status' => false,
11+
'activated' => ""
12+
];
13+
//define the schema model for validation
14+
$rules=[
15+
"status" => $schema->boolean()->required()->max(true)->isValid('TRUE')->generate(),
16+
"activated" => $schema->boolean()->required()->min(false)->isValid('FALSE')->generate(),
17+
];
18+
19+
$validate->check($data_source,$rules);
20+
// check if the validation passed or not
21+
var_dump($validate->passed());
22+
var_dump($validate->errors());

example/date.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
6+
$validate = new \Wepesi\App\Validate();
7+
$schema = new \Wepesi\App\Schema();
8+
9+
$data_source = [
10+
'birth_day' => '2021-05-23',
11+
'date_created' => '2021-05-23'
12+
];
13+
$rules=[
14+
"birth_day" => $schema->date()->min("-18years")->required()->generate(),
15+
"date_created" => $schema->date()->now()->max("100years")->required()->generate()
16+
];
17+
$validate->check($data_source,$rules);
18+
19+
var_dump($validate->passed());
20+
var_dump($validate->errors());

example/index.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
6+
7+
$data_source = [
8+
"name" => "ibrahim",
9+
"age" => 12,
10+
"country" => "DRC",
11+
"state" => "North Kivu",
12+
"password"=>"1234567",
13+
"new_password"=>123456,
14+
"city" => "Goma",
15+
"email"=>"infos@wepesi.com",
16+
"link"=> "https://github.com/bim-g/wepesi_validation/",
17+
"status"=> true,
18+
"birth_day"=>"2021-05-23",
19+
"date_created"=>"2021-05-23"
20+
];
21+
22+
// include_once __DIR__."/string.php";
23+
// include __DIR__."/number.php";
24+
// include __DIR__."/date.php";
25+
include __DIR__."/boolean.php";

example/number.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
6+
7+
$validate = new \Wepesi\App\Validate();
8+
$schema = new \Wepesi\App\Schema();
9+
$data_source = [
10+
"age" => 20,
11+
"length" => 0,
12+
"height" =>"35",
13+
"width" =>"",
14+
"direction" => -7
15+
];
16+
$rules=[
17+
"age" => $schema->number()->min(8)->max(15)->required()->generate(),
18+
"length" => $schema->number()->min(1)->max(10)->required()->generate(),
19+
"height" => $schema->number()->min(18)->max(50)->required()->generate(),
20+
"width" => $schema->number()->min(3)->max(50)->required()->generate(),
21+
"direction" => $schema->number()->min(3)->max(50)->positive()->required()->generate(),
22+
];
23+
$validate->check($data_source,$rules);
24+
25+
var_dump($validate->passed());
26+
var_dump($validate->errors());

example/string.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
6+
/**
7+
* Validate string
8+
*/
9+
10+
use Wepesi\App\Schema;
11+
use Wepesi\App\Validate;
12+
13+
$schema = new Schema();
14+
$validate = new Validate();
15+
$source = [
16+
'name' => 'ibrahim',
17+
'country' => "",
18+
'password' => '1234567',
19+
'new_password' => 123456,
20+
'email' => 'infos@wepesi.com',
21+
'link' => 'https://github.com/bim-g/wepesi_validation/'
22+
];
23+
$rules = [
24+
"name" => $schema->string()->email()->min(35)->max(50)->required()->generate(),
25+
"country" => $schema->string()->min(3)->max(40)->required()->generate(),
26+
"password" => $schema->string()->min(3)->max(40)->generate(),
27+
"new_password" => $schema->string()->min(3)->max(40)->match("password")->generate(),
28+
"email" => $schema->string()->min(3)->max(40)->email()->generate(),
29+
"link" => $schema->string()->min(3)->max(40)->url()->generate(),
30+
];
31+
$validate->check($source, $rules);
32+
//// check if the validation passed or not
33+
var_dump($validate->passed());
34+
var_dump($validate->errors());

index.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<?php
2+
/*
3+
* Copyright (c) 2022. Wepesi validation.
4+
* @author Boss Ibrahim Mussa
5+
*/
26

3-
require_once "./vendor/autoload.php";
4-
include('./shared/global.php');
5-
include('./test/index.php');
7+
require_once __DIR__."/vendor/autoload.php";
8+
include __DIR__.'/example/index.php';

shared/global.php

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)