]> granicus.if.org Git - php/commitdiff
Add RFC on delegation.
authorSebastian Bergmann <sebastian@php.net>
Thu, 6 Jun 2002 21:13:39 +0000 (21:13 +0000)
committerSebastian Bergmann <sebastian@php.net>
Thu, 6 Jun 2002 21:13:39 +0000 (21:13 +0000)
Zend/RFCs/004.txt [new file with mode: 0644]

diff --git a/Zend/RFCs/004.txt b/Zend/RFCs/004.txt
new file mode 100644 (file)
index 0000000..6d97369
--- /dev/null
@@ -0,0 +1,76 @@
+Title:           Delegation
+                 (a/k/a. Object-Based Inheritance)
+Version:         $Revision$
+Status:          draft
+Maintainer:      Sebastian Bergmann <sb@sebastian-bergmann.de>
+
+
+Dynamic Delegation
+
+  Syntax / Example
+
+    <?php
+    class aDelegatee {
+      function doSomething() {
+        echo 'hubu';
+      }
+    }
+
+    class anotherDelegatee {
+      function doSomething() {
+        echo 'tubu';
+      }
+    }
+
+    class Foo {
+      delegatee $bar;
+
+      function setDelegatee($delegatee) {
+        $this->delegatee = $delegatee;
+      }
+    }
+
+    $foo = new Foo;
+
+    $foo->setDelegatee(new aDelegatee);
+    $foo->doSomething(); /* prints "hubu" */
+
+    $foo->setDelegatee(new anotherDelegatee);
+    $foo->doSomething(); /* prints "tubu" */
+    ?>
+
+  Semantics / Synopsis
+
+    The "Foo" class may use all methods available in "$bar" as if they 
+    where locally defined or inherited from a superclass. The essential 
+    difference is that by assigning another object to "$bar" it is 
+    possible to dynamically switch between different implementations for 
+    these methods.
+
+
+Fixed Delegation
+
+  Syntax / Example
+
+    <?php
+    class aDelegatee {
+      function doSomething() {
+        echo 'hubu';
+      }
+    }
+
+    class Foo {
+      final delegatee $bar = new aDelegatee;
+    }
+
+    $foo = new Foo;
+
+    $foo->doSomething(); /* prints "hubu" */
+    ?>
+
+  Semantics / Synopsis
+
+    The "Foo" class may use all methods available in "$bar" as if they 
+    where locally defined or inherited from a superclass. The difference
+    to the dynamic delegation is that once the delegatee object is set,
+    it cannot be changed.