Skip to content

Commit 61ec5a4

Browse files
author
Christian Blank
committed
Add spec and types
1 parent e2de669 commit 61ec5a4

9 files changed

+154
-3
lines changed

src/Checker.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Checker implements CheckerInterface
1414
/**
1515
* @inheritdoc
1616
*/
17-
public function fulfills(array $argument1, TypeInterface $requirement)
17+
public function fulfills($argument1, TypeInterface $requirement)
1818
{
1919
return new Result(true, []);
2020
}

src/CheckerInterface.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ interface CheckerInterface
1212
{
1313

1414
/**
15-
* @param array $tested
15+
* @param mixed $element the element which should be tested
1616
* @param TypeInterface $requirement
1717
*
1818
* @return ResultInterface
1919
*/
20-
public function fulfills(array $tested, TypeInterface $requirement);
20+
public function fulfills($element, TypeInterface $requirement);
2121
}

src/Type/BoolType.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
use StructureCheck\Result;
6+
use StructureCheck\ResultInterface;
7+
8+
/**
9+
* Class BoolType
10+
* @package StructureCheck\Type
11+
*/
12+
class BoolType implements TypeInterface
13+
{
14+
private static $errorMessage = 'The value %s is not a boolean.';
15+
16+
/**
17+
* @param mixed $value
18+
*
19+
* @return ResultInterface
20+
*/
21+
public function check($value)
22+
{
23+
$checkResult = is_string($value);
24+
25+
return new Result(
26+
$checkResult,
27+
!$checkResult ? [sprintf(self::$errorMessage, json_encode($value))] : []
28+
);
29+
}
30+
}

src/Type/FloatType.php

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
class FloatType
6+
{
7+
}

src/Type/IntType.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
use StructureCheck\Result;
6+
use StructureCheck\ResultInterface;
7+
8+
/**
9+
* Class IntType
10+
* @package StructureCheck\Type
11+
*/
12+
class IntType implements TypeInterface
13+
{
14+
private static $errorMessage = 'The value %s is not an integer.';
15+
16+
/**
17+
* @param mixed $value
18+
*
19+
* @return ResultInterface
20+
*/
21+
public function check($value)
22+
{
23+
$checkResult = is_int($value);
24+
25+
return new Result(
26+
$checkResult,
27+
!$checkResult ? [sprintf(self::$errorMessage, json_encode($value))] : []
28+
);
29+
}
30+
}

src/Type/ListType.php

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
class ListType
6+
{
7+
}

src/Type/NullableType.php

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
use StructureCheck\Result;
6+
7+
/**
8+
* Class NullableType
9+
* @package StructureCheck\Type
10+
*/
11+
class NullableType implements TypeInterface
12+
{
13+
14+
/**
15+
* @var TypeInterface
16+
*/
17+
private $child;
18+
19+
/**
20+
* NullableType constructor.
21+
*
22+
* @param TypeInterface $child
23+
*/
24+
public function __construct(TypeInterface $child)
25+
{
26+
$this->child = $child;
27+
}
28+
29+
/**
30+
* @inheritdoc
31+
*/
32+
public function check($value)
33+
{
34+
if(is_null($value)) {
35+
return new Result(true, []);
36+
}
37+
38+
return $this->child->check($value);
39+
}
40+
}

src/Type/ObjectType.php

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
class ObjectType
6+
{
7+
}

src/Type/StringType.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace StructureCheck\Type;
4+
5+
use StructureCheck\Result;
6+
use StructureCheck\ResultInterface;
7+
8+
/**
9+
* Class StringType
10+
* @package StructureCheck\Type
11+
*/
12+
class StringType implements TypeInterface
13+
{
14+
private static $errorMessage = 'The value %s is not a string.';
15+
16+
/**
17+
* @param mixed $value
18+
*
19+
* @return ResultInterface
20+
*/
21+
public function check($value)
22+
{
23+
$checkResult = is_string($value);
24+
25+
return new Result(
26+
$checkResult,
27+
!$checkResult ? [sprintf(self::$errorMessage, json_encode($value))] : []
28+
);
29+
}
30+
}

0 commit comments

Comments
 (0)