summaryrefslogtreecommitdiffstats
path: root/vendor/ipl/validator/src/DeferredInArrayValidator.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ipl/validator/src/DeferredInArrayValidator.php')
-rw-r--r--vendor/ipl/validator/src/DeferredInArrayValidator.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/ipl/validator/src/DeferredInArrayValidator.php b/vendor/ipl/validator/src/DeferredInArrayValidator.php
new file mode 100644
index 0000000..55b9b83
--- /dev/null
+++ b/vendor/ipl/validator/src/DeferredInArrayValidator.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace ipl\Validator;
+
+/**
+ * Validates whether the value exists in the haystack created by the callback
+ */
+class DeferredInArrayValidator extends InArrayValidator
+{
+ /** @var callable Callback to create the haystack array */
+ protected $callback;
+
+ /**
+ * Create a new deferredInArray validator
+ *
+ * **Required parameter:**
+ *
+ * - `callback`: (`callable`) The callback to create haystack
+ *
+ * **Optional parameter:**
+ *
+ * *options: (`array`) Following option can be defined:*
+ *
+ * * `strict`: (`bool`) Whether the types of the needle in the haystack should also match, default `false`
+ *
+ * @param callable $callback Validation callback
+ * @param array $options
+ */
+ public function __construct(callable $callback, array $options = [])
+ {
+ $this->callback = $callback;
+
+ parent::__construct($options);
+ }
+
+ public function getHaystack(): array
+ {
+ return $this->haystack ?? call_user_func($this->callback);
+ }
+
+ /**
+ * Set the callback
+ *
+ * @param callable $callback
+ *
+ * @return $this
+ */
+ public function setCallback(callable $callback): self
+ {
+ $this->haystack = null;
+ $this->callback = $callback;
+
+ return $this;
+ }
+}