summaryrefslogtreecommitdiff
path: root/engine/SkinString.php
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2022-07-09 19:40:17 +0300
committerEvgeny Zinoviev <me@ch1p.io>2022-07-09 19:40:17 +0300
commitf7bfdf58def6aadc922e1632f407d1418269a0d7 (patch)
treed7a0b2819e6a26c11d40ee0b27267ea827fbb345 /engine/SkinString.php
initial
Diffstat (limited to 'engine/SkinString.php')
-rw-r--r--engine/SkinString.php23
1 files changed, 23 insertions, 0 deletions
diff --git a/engine/SkinString.php b/engine/SkinString.php
new file mode 100644
index 0000000..0f8f14d
--- /dev/null
+++ b/engine/SkinString.php
@@ -0,0 +1,23 @@
+<?php
+
+class SkinString implements Stringable {
+
+ protected SkinStringModificationType $modType;
+
+ public function __construct(protected string $string) {}
+
+ public function setModType(SkinStringModificationType $modType) {
+ $this->modType = $modType;
+ }
+
+ public function __toString(): string {
+ return match ($this->modType) {
+ SkinStringModificationType::HTML => htmlescape($this->string),
+ SkinStringModificationType::URL => urlencode($this->string),
+ SkinStringModificationType::JSON => json_encode($this->string, JSON_UNESCAPED_UNICODE),
+ SkinStringModificationType::ADDSLASHES => addslashes($this->string),
+ default => $this->string,
+ };
+ }
+
+} \ No newline at end of file