aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/chillerlan/php-settings-container/examples/advanced.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/chillerlan/php-settings-container/examples/advanced.php')
-rw-r--r--vendor/chillerlan/php-settings-container/examples/advanced.php51
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/chillerlan/php-settings-container/examples/advanced.php b/vendor/chillerlan/php-settings-container/examples/advanced.php
new file mode 100644
index 000000000..f11642c83
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/examples/advanced.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * @created 28.08.2018
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2018 smiley
+ * @license MIT
+ */
+
+namespace chillerlan\SettingsExamples;
+
+use chillerlan\Settings\SettingsContainerAbstract;
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+// from library #1
+trait SomeOptions{
+ protected string $foo = '';
+
+ // this method will be called in SettingsContainerAbstract::__construct() after the properties have been set
+ protected function SomeOptions(){
+ // just some constructor stuff...
+ $this->foo = strtoupper($this->foo);
+ }
+}
+
+// from library #2
+trait MoreOptions{
+ protected string $bar = 'whatever'; // provide default values
+}
+
+$commonOptions = [
+ // SomeOptions
+ 'foo' => 'whatever',
+ // MoreOptions
+ 'bar' => 'nothing',
+];
+
+// now plug the several library options together to a single object
+
+/**
+ * @property string $foo
+ * @property string $bar
+ */
+class MySettings extends SettingsContainerAbstract{
+ use SomeOptions, MoreOptions; // ...
+};
+
+$container = new MySettings($commonOptions);
+
+var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the value)
+var_dump($container->bar); // -> nothing