summaryrefslogtreecommitdiff
path: root/src/Http/Validation/Rules/StringInputLength.php
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2019-10-07 21:59:40 +0200
committerIgor Scheller <igor.scheller@igorshp.de>2019-10-07 21:59:40 +0200
commit8d090438b659b641dd0f6cbc99193f3b48b2fc4b (patch)
tree030e2b069d4583e6ad6e498612c959c15850c8e6 /src/Http/Validation/Rules/StringInputLength.php
parentfaf74150e9481ad9338eb6cc2428d02b24e9fc43 (diff)
Validation rules: min/max/between: Use string length to compare strings
Diffstat (limited to 'src/Http/Validation/Rules/StringInputLength.php')
-rw-r--r--src/Http/Validation/Rules/StringInputLength.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/Http/Validation/Rules/StringInputLength.php b/src/Http/Validation/Rules/StringInputLength.php
new file mode 100644
index 00000000..7b5c248b
--- /dev/null
+++ b/src/Http/Validation/Rules/StringInputLength.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Engelsystem\Http\Validation\Rules;
+
+use DateTime;
+use Illuminate\Support\Str;
+use Throwable;
+
+trait StringInputLength
+{
+ /**
+ * Use the input length of a string
+ *
+ * @param mixed $input
+ * @return bool
+ */
+ public function validate($input): bool
+ {
+ if (
+ is_string($input)
+ && !is_numeric($input)
+ && !$this->isDateTime($input)
+ ) {
+ $input = Str::length($input);
+ }
+
+ return parent::validate($input);
+ }
+
+ /**
+ * @param mixed $input
+ * @return bool
+ */
+ protected function isDateTime($input): bool
+ {
+ try {
+ new DateTime($input);
+ } catch (Throwable $e) {
+ return false;
+ }
+
+ return true;
+ }
+}