summaryrefslogtreecommitdiffstats
path: root/vendor/ipl/stdlib/src/Messages.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ipl/stdlib/src/Messages.php')
-rw-r--r--vendor/ipl/stdlib/src/Messages.php92
1 files changed, 92 insertions, 0 deletions
diff --git a/vendor/ipl/stdlib/src/Messages.php b/vendor/ipl/stdlib/src/Messages.php
new file mode 100644
index 0000000..b601c1d
--- /dev/null
+++ b/vendor/ipl/stdlib/src/Messages.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace ipl\Stdlib;
+
+trait Messages
+{
+ /** @var array */
+ protected $messages = [];
+
+ /**
+ * Get whether there are any messages
+ *
+ * @return bool
+ */
+ public function hasMessages()
+ {
+ return ! empty($this->messages);
+ }
+
+ /**
+ * Get all messages
+ *
+ * @return array
+ */
+ public function getMessages()
+ {
+ return $this->messages;
+ }
+
+ /**
+ * Set the given messages overriding existing ones
+ *
+ * @param string[] $messages
+ *
+ * @return $this
+ */
+ public function setMessages(array $messages)
+ {
+ $this->clearMessages();
+
+ foreach ($messages as $message) {
+ $this->addMessage($message);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Add a single message
+ *
+ * @param string $message
+ * @param mixed ...$args Optional args for sprintf-style messages
+ *
+ * @return $this
+ */
+ public function addMessage($message, ...$args)
+ {
+ if (empty($args)) {
+ $this->messages[] = $message;
+ } else {
+ $this->messages[] = vsprintf($message, $args);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Add the given messages
+ *
+ * @param array $messages
+ *
+ * @return $this
+ */
+ public function addMessages(array $messages)
+ {
+ $this->messages = array_merge($this->messages, $messages);
+
+ return $this;
+ }
+
+ /**
+ * Drop any existing message
+ *
+ * @return $this
+ */
+ public function clearMessages()
+ {
+ $this->messages = [];
+
+ return $this;
+ }
+}