Skip to content

Commit 8142ca0

Browse files
committed
Deleted ValidatorUtils
1 parent ffc0296 commit 8142ca0

13 files changed

+110
-119
lines changed

src/Collection.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ public function __construct(Connection $connection, $databaseName, $collectionNa
5050
/**
5151
* @return string
5252
*/
53-
public function getName()
53+
public function getDatabaseName()
5454
{
55-
return $this->name;
55+
return $this->databaseName;
5656
}
5757

5858
/**
5959
* @return string
6060
*/
61-
public function getDatabaseName()
61+
public function getName()
6262
{
63-
return $this->databaseName;
63+
return $this->name;
6464
}
6565

6666
/**

src/Cursor.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Tequilla\MongoDB;
4+
5+
class Cursor
6+
{
7+
public function __construct(Connection $connection, $namespace)
8+
{
9+
10+
}
11+
}

src/Util/StringUtils.php

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,6 @@
66

77
final class StringUtils
88
{
9-
/**
10-
* Checks if string starts with substring
11-
*
12-
* @param $string
13-
* @param $substring
14-
* @return bool
15-
*/
16-
public static function startsWith($string, $substring)
17-
{
18-
return 0 === mb_strpos($string, $substring);
19-
}
20-
219
/**
2210
* Ensures that given string is a valid MongoDB database name
2311
*
@@ -54,31 +42,6 @@ public static function ensureValidCollectionName($collectionName) {
5442
}
5543
}
5644

57-
/**
58-
* Ensures that given string is a valid MongoDB document field name
59-
*
60-
* @param string $fieldName
61-
*/
62-
public static function ensureValidDocumentFieldName($fieldName) {
63-
if (!is_string($fieldName)) {
64-
throw new InvalidArgumentException(
65-
sprintf('Document\'s field name must be a string, %s given', TypeUtils::getType($fieldName))
66-
);
67-
}
68-
69-
if (empty($fieldName)) {
70-
throw new InvalidArgumentException('Document\'s field name cannot be empty.');
71-
}
72-
73-
if (self::startsWith($fieldName, '$')) {
74-
throw new InvalidArgumentException(
75-
sprintf(
76-
'Document\'s field name cannot start with "$" character, field name "%s" given',
77-
$fieldName
78-
)
79-
);
80-
}
81-
}
8245

8346
public static function createNamespace($databaseName, $collectionName)
8447
{

src/Write/Model/DeleteMany.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace Tequilla\MongoDB\Write\Model;
44

55
use Tequilla\MongoDB\Write\Options\DeleteManyOptions;
6-
use Tequilla\MongoDB\Util\ValidatorUtils;
76

87
class DeleteMany implements WriteModelInterface
98
{
9+
use Traits\FilterValidationTrait;
1010
use Traits\BulkDeleteTrait;
1111

1212
/**
@@ -15,7 +15,7 @@ class DeleteMany implements WriteModelInterface
1515
*/
1616
public function __construct($filter, array $options = [])
1717
{
18-
ValidatorUtils::ensureValidFilter($filter);
18+
$this->ensureValidFilter($filter);
1919
$this->filter = $filter;
2020
$this->options = DeleteManyOptions::getCachedResolver()->resolve($options);
2121
}

src/Write/Model/DeleteOne.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace Tequilla\MongoDB\Write\Model;
44

55
use Tequilla\MongoDB\Write\Options\DeleteOneOptions;
6-
use Tequilla\MongoDB\Util\ValidatorUtils;
76

87
class DeleteOne implements WriteModelInterface
98
{
9+
use Traits\FilterValidationTrait;
1010
use Traits\BulkDeleteTrait;
1111

1212
/**
@@ -15,7 +15,8 @@ class DeleteOne implements WriteModelInterface
1515
*/
1616
public function __construct($filter, array $options = [])
1717
{
18-
ValidatorUtils::ensureValidFilter($filter);
18+
$this->ensureValidFilter($filter);
19+
1920
$this->filter = $filter;
2021
$this->options = DeleteOneOptions::getCachedResolver()->resolve($options);
2122
}

src/Write/Model/InsertOne.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
use Tequilla\MongoDB\Exception\InvalidArgumentException;
66
use Tequilla\MongoDB\Util\TypeUtils;
77
use Tequilla\MongoDB\Write\Bulk\BulkWrite;
8-
use Tequilla\MongoDB\Util\ValidatorUtils;
8+
use Tequilla\MongoDB\Write\Model\Traits\DocumentValidationTrait;
99

1010
class InsertOne implements WriteModelInterface
1111
{
12+
use DocumentValidationTrait;
13+
1214
/**
1315
* @var array|object
1416
*/
@@ -28,7 +30,7 @@ public function __construct($document)
2830
);
2931
}
3032

31-
ValidatorUtils::ensureValidDocument($document);
33+
$this->ensureValidDocument($document);
3234

3335
$this->document = $document;
3436
}

src/Write/Model/ReplaceOne.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22

33
namespace Tequilla\MongoDB\Write\Model;
44

5+
use Tequilla\MongoDB\Exception\InvalidArgumentException;
6+
use Tequilla\MongoDB\Util\TypeUtils;
57
use Tequilla\MongoDB\Write\Bulk\BulkWrite;
68
use Tequilla\MongoDB\Write\Options\ReplaceOneOptions;
7-
use Tequilla\MongoDB\Util\ValidatorUtils;
89

910
class ReplaceOne implements WriteModelInterface
1011
{
12+
use Traits\FilterValidationTrait;
13+
use Traits\DocumentValidationTrait;
1114
/**
1215
* @var array|object
1316
*/
@@ -30,8 +33,18 @@ class ReplaceOne implements WriteModelInterface
3033
*/
3134
public function __construct($filter, $replacement, array $options = [])
3235
{
33-
ValidatorUtils::ensureValidFilter($filter);
34-
ValidatorUtils::ensureValidDocument($replacement);
36+
$this->ensureValidFilter($filter);
37+
38+
if (!is_array($replacement) && !is_object($replacement)) {
39+
throw new InvalidArgumentException(
40+
sprintf(
41+
'$replacement must be an array or an object, %s given',
42+
TypeUtils::getType($filter)
43+
)
44+
);
45+
}
46+
47+
$this->ensureValidDocument($replacement);
3548

3649
$this->filter = $filter;
3750
$this->replacement = $replacement;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Tequilla\MongoDB\Write\Model\Traits;
4+
5+
use MongoDB\BSON\Serializable;
6+
use Tequilla\MongoDB\Exception\InvalidArgumentException;
7+
8+
trait DocumentValidationTrait
9+
{
10+
private function ensureValidDocument($document)
11+
{
12+
if ($document instanceof Serializable) {
13+
$document = $document->bsonSerialize();
14+
}
15+
16+
$document = (array) $document;
17+
18+
foreach ($document as $fieldName => $value) {
19+
if (!preg_match('/^[^$][^\.]*$/', $fieldName)) {
20+
throw new InvalidArgumentException(
21+
sprintf(
22+
'Invalid field name "%s": field names cannot start with a dollar sign ("$") and cannot contain a dots',
23+
$fieldName
24+
)
25+
);
26+
}
27+
28+
if (is_array($value) || is_object($value)) {
29+
self::ensureValidDocument($document);
30+
}
31+
}
32+
}
33+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Tequilla\MongoDB\Write\Model\Traits;
4+
5+
use Tequilla\MongoDB\Exception\InvalidArgumentException;
6+
use Tequilla\MongoDB\Util\TypeUtils;
7+
8+
trait FilterValidationTrait
9+
{
10+
public function ensureValidFilter($filter)
11+
{
12+
if (!is_array($filter) && !is_object($filter)) {
13+
throw new InvalidArgumentException(
14+
sprintf(
15+
'$filter must be an array or an object, %s given',
16+
TypeUtils::getType($filter)
17+
)
18+
);
19+
}
20+
}
21+
}
Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,16 @@
11
<?php
22

3-
namespace Tequilla\MongoDB\Util;
3+
namespace Tequilla\MongoDB\Write\Model\Traits;
44

55
use Symfony\Component\OptionsResolver\OptionsResolver;
66
use Tequilla\MongoDB\Exception\InvalidArgumentException;
7+
use Tequilla\MongoDB\Util\TypeUtils;
78
use Symfony\Component\OptionsResolver\Exception\InvalidArgumentException as OptionsResolverException;
89

9-
final class ValidatorUtils
10+
trait UpdateValidationTrait
1011
{
11-
/**
12-
* @var bool
13-
*/
14-
private static $documentValidationEnabled = false;
15-
16-
/**
17-
* @var OptionsResolver
18-
*/
1912
private static $updateResolver;
2013

21-
/**
22-
* @param array|object $document
23-
*/
24-
public static function ensureValidDocument($document)
25-
{
26-
if (!self::$documentValidationEnabled) {
27-
return;
28-
}
29-
30-
$document = TypeUtils::ensureArrayRecursive($document);
31-
32-
if (empty($document)) {
33-
throw new InvalidArgumentException('Document cannot be empty');
34-
}
35-
36-
array_walk_recursive($document, function($value, $fieldName) {
37-
StringUtils::ensureValidDocumentFieldName($fieldName);
38-
});
39-
}
40-
41-
public static function ensureValidFilter($filter)
42-
{
43-
if (!is_array($filter) && !is_object($filter)) {
44-
throw new InvalidArgumentException(
45-
sprintf(
46-
'$filter must be an array or an object, %s given',
47-
TypeUtils::getType($filter)
48-
)
49-
);
50-
}
51-
}
52-
53-
/**
54-
* @param array|object $update
55-
*/
5614
public static function ensureValidUpdate($update)
5715
{
5816
if (!is_array($update) && !is_object($update)) {
@@ -116,20 +74,4 @@ private static function getUpdateResolver()
11674

11775
return self::$updateResolver;
11876
}
119-
120-
/**
121-
* Enables heavy validation, like recursive documents validation etc.
122-
*/
123-
public static function enableDocumentValidation()
124-
{
125-
self::$documentValidationEnabled = true;
126-
}
127-
128-
/**
129-
* Disables heavy validation, like recursive documents validation etc.
130-
*/
131-
public static function disableDocumentValidation()
132-
{
133-
self::$documentValidationEnabled = false;
134-
}
13577
}

src/Write/Model/Update.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
namespace Tequilla\MongoDB\Write\Model;
44

55
use Tequilla\MongoDB\Write\Options\UpdateOptions;
6-
use Tequilla\MongoDB\Util\ValidatorUtils;
76

87
class Update implements WriteModelInterface
98
{
9+
use Traits\FilterValidationTrait;
1010
use Traits\BulkUpdateTrait;
11+
use Traits\UpdateValidationTrait;
1112

1213
/**
1314
* @param array|object $filter
@@ -16,7 +17,7 @@ class Update implements WriteModelInterface
1617
*/
1718
public function __construct($filter, $update, array $options = [])
1819
{
19-
ValidatorUtils::ensureValidFilter($filter);
20+
$this->ensureValidFilter($filter);
2021
$this->filter = $filter;
2122
$this->update = $update;
2223
$this->options = UpdateOptions::getCachedResolver()->resolve($options);

src/Write/Model/UpdateMany.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
namespace Tequilla\MongoDB\Write\Model;
44

55
use Tequilla\MongoDB\Write\Options\UpdateManyOptions;
6-
use Tequilla\MongoDB\Util\ValidatorUtils;
76

87
class UpdateMany implements WriteModelInterface
98
{
9+
use Traits\FilterValidationTrait;
10+
use Traits\UpdateValidationTrait;
1011
use Traits\BulkUpdateTrait;
12+
use Traits\UpdateValidationTrait;
1113

1214
/**
1315
* Update constructor.
@@ -17,8 +19,8 @@ class UpdateMany implements WriteModelInterface
1719
*/
1820
public function __construct($filter, $update, array $options = [])
1921
{
20-
ValidatorUtils::ensureValidFilter($filter);
21-
ValidatorUtils::ensureValidUpdate($update);
22+
$this->ensureValidFilter($filter);
23+
$this->ensureValidUpdate($update);
2224

2325
$this->filter = $filter;
2426
$this->update = $update;

0 commit comments

Comments
 (0)