From: Gunnar Wrobel
Date: Fri, 2 Oct 2009 13:40:33 +0000 (+0200)
Subject: Some example of how to use Horde_Injector.
X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=93506afbce096039caeaa581628a876410dfdac2;p=horde.git
Some example of how to use Horde_Injector.
---
diff --git a/framework/Injector/examples/Horde/Injector/binder.php b/framework/Injector/examples/Horde/Injector/binder.php
new file mode 100644
index 000000000..5058aaf83
--- /dev/null
+++ b/framework/Injector/examples/Horde/Injector/binder.php
@@ -0,0 +1,56 @@
+
+ * @license http://opensource.org/licenses/bsd-license.php BSD
+ * @link http://pear.horde.org/index.php?package=Injector
+ */
+
+require_once 'Horde/Autoloader.php';
+
+/**
+ * A dummy binder.
+ *
+ * @category Horde
+ * @package Injector
+ * @author Gunnar Wrobel
+ * @license http://opensource.org/licenses/bsd-license.php BSD
+ * @link http://pear.horde.org/index.php?package=Injector
+ */
+class Binder implements Horde_Injector_Binder
+{
+ /**
+ * Create an instance.
+ *
+ * @param Horde_Injector $injector The injector should provide all required
+ * dependencies for creating the instance.
+ *
+ * @return mixed The concrete instance.
+ */
+ public function create(Horde_Injector $injector)
+ {
+ return 'constructed';
+ }
+
+ /**
+ * Determine if one binder equals another binder
+ *
+ * @param Horde_Injector_Binder $binder The binder to compare against $this
+ *
+ * @return bool true if they are equal, or false if they are not equal
+ */
+ public function equals(Horde_Injector_Binder $binder)
+ {
+ return false;
+ }
+}
+
+$a = new Horde_Injector(new Horde_Injector_TopLevel());
+$a->addBinder('constructed', new Binder());
+var_dump($a->getInstance('constructed'));
\ No newline at end of file
diff --git a/framework/Injector/examples/Horde/Injector/factory.php b/framework/Injector/examples/Horde/Injector/factory.php
new file mode 100644
index 000000000..a4bd4e71c
--- /dev/null
+++ b/framework/Injector/examples/Horde/Injector/factory.php
@@ -0,0 +1,40 @@
+
+ * @license http://opensource.org/licenses/bsd-license.php BSD
+ * @link http://pear.horde.org/index.php?package=Injector
+ */
+
+require_once 'Horde/Autoloader.php';
+
+class Greet
+{
+ public function __construct($somebody)
+ {
+ $this->somebody = $somebody;
+ }
+
+ public function greet()
+ {
+ print 'Hello ' . $this->somebody;
+ }
+}
+
+class Factory
+{
+ static public function getGreeter(Horde_Injector $injector)
+ {
+ return new Greet($injector->getInstance('Person'));
+ }
+}
+
+$a = new Horde_Injector(new Horde_Injector_TopLevel());
+$a->setInstance('Person', 'Bob');
+$a->bindFactory('Greet', 'Factory', 'getGreeter');
+$a->getInstance('Greet')->greet();
\ No newline at end of file
diff --git a/framework/Injector/examples/Horde/Injector/implementation.php b/framework/Injector/examples/Horde/Injector/implementation.php
new file mode 100644
index 000000000..eb488eb5e
--- /dev/null
+++ b/framework/Injector/examples/Horde/Injector/implementation.php
@@ -0,0 +1,50 @@
+
+ * @license http://opensource.org/licenses/bsd-license.php BSD
+ * @link http://pear.horde.org/index.php?package=Injector
+ */
+
+require_once 'Horde/Autoloader.php';
+
+interface Person
+{
+ public function __toString();
+}
+
+class World implements Person
+{
+ public function __toString()
+ {
+ return 'World';
+ }
+}
+
+interface Greeter
+{
+ public function greet();
+}
+
+class Hello implements Greeter
+{
+ public function __construct(Person $somebody)
+ {
+ $this->somebody = $somebody;
+ }
+
+ public function greet()
+ {
+ print 'Hello ' . $this->somebody;
+ }
+}
+
+$a = new Horde_Injector(new Horde_Injector_TopLevel());
+$a->bindImplementation('Person', 'World');
+$a->bindImplementation('Greeter', 'Hello');
+$a->getInstance('Greeter')->greet();
\ No newline at end of file
diff --git a/framework/Injector/examples/Horde/Injector/setget.php b/framework/Injector/examples/Horde/Injector/setget.php
new file mode 100644
index 000000000..a2e0543b3
--- /dev/null
+++ b/framework/Injector/examples/Horde/Injector/setget.php
@@ -0,0 +1,18 @@
+
+ * @license http://opensource.org/licenses/bsd-license.php BSD
+ * @link http://pear.horde.org/index.php?package=Injector
+ */
+
+require_once 'Horde/Autoloader.php';
+
+$a = new Horde_Injector(new Horde_Injector_TopLevel());
+$a->setInstance('a', 'a');
+var_dump($a->getInstance('a'));