Remove Horde_Injector filters after more consideration.
authorChuck Hagenbuch <chuck@horde.org>
Mon, 26 Apr 2010 15:46:29 +0000 (11:46 -0400)
committerChuck Hagenbuch <chuck@horde.org>
Wed, 28 Apr 2010 03:52:24 +0000 (23:52 -0400)
framework/Injector/lib/Horde/Injector.php
framework/Injector/lib/Horde/Injector/Filter.php [deleted file]
framework/Injector/lib/Horde/Injector/Filter/AnnotatedSetterInjector.php [deleted file]
framework/Injector/package.xml
framework/Injector/test/Horde/Injector/Filter/AnnotatedSetterInjectorTest.php [deleted file]

index 77fe90b..e2d3771 100644 (file)
@@ -16,7 +16,6 @@ class Horde_Injector implements Horde_Injector_Scope
 {
     private $_parentInjector;
     private $_bindings = array();
-    private $_filters = array();
     private $_instances;
 
     /**
@@ -198,11 +197,7 @@ class Horde_Injector implements Horde_Injector_Scope
      */
     public function createInstance($interface)
     {
-        $instance = $this->getBinder($interface)->create($this);
-        if ($instance) {
-            $this->runFilters($instance);
-        }
-        return $instance;
+        return $this->getBinder($interface)->create($this);
     }
 
     /**
@@ -269,24 +264,4 @@ class Horde_Injector implements Horde_Injector_Scope
 
         throw new Horde_Injector_Exception("Untyped parameter \$" . $parameter->getName() . "can't be fulfilled");
     }
-
-    /**
-     * Add an object creation filter
-     */
-    public function addFilter(Horde_Injector_Filter $filter)
-    {
-        $this->_filters[] = $filter;
-    }
-
-    /**
-     * Run object creation filters on a new object
-     *
-     * @param object $instance  The new instance to filter.
-     */
-    public function runFilters($instance)
-    {
-        foreach ($this->_filters as $filter) {
-            $filter->filter($this, $instance);
-        }
-    }
 }
diff --git a/framework/Injector/lib/Horde/Injector/Filter.php b/framework/Injector/lib/Horde/Injector/Filter.php
deleted file mode 100644 (file)
index 267d483..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Interface for object post-creation filters.
- *
- * @author   Bob Mckee <bmckee@bywires.com>
- * @author   James Pepin <james@jamespepin.com>
- * @author   Chuck Hagenbuch <chuck@horde.org>
- * @category Horde
- * @package  Horde_Injector
- */
-interface Horde_Injector_Filter
-{
-    /**
-     * @param Horde_Injector $injector  The active Horde_Injector
-     * @param object $instance          The new instance to filter
-     *
-     * @return void
-     */
-    public function filter(Horde_Injector $injector, $instance);
-}
diff --git a/framework/Injector/lib/Horde/Injector/Filter/AnnotatedSetterInjector.php b/framework/Injector/lib/Horde/Injector/Filter/AnnotatedSetterInjector.php
deleted file mode 100644 (file)
index 4abb760..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * Filter that finds variables marked with @inject and injects them into an
- * object.
- *
- * @author   Bob Mckee <bmckee@bywires.com>
- * @author   James Pepin <james@jamespepin.com>
- * @author   Chuck Hagenbuch <chuck@horde.org>
- * @category Horde
- * @package  Horde_Injector
- */
-class Horde_Injector_Filter_AnnotatedSetterInjector implements Horde_Injector_Filter
-{
-    /**
-     * @var Horde_Injector_DependencyFinder
-     */
-    protected $_dependencyFinder;
-
-    /**
-     * Inspect the object's class docblock for @inject annotations, and fill
-     * those objects in through their setter methods.
-     *
-     * @param object $instance  The object to do setter injection on.
-     */
-    public function filter(Horde_Injector $injector, $instance)
-    {
-        $reflectionClass = new ReflectionClass($instance);
-        $setters = $this->_findSetters($reflectionClass);
-        $this->_callSetters($injector, $instance, $setters);
-    }
-
-    /**
-     * Find annotated setters in the class docblock
-     *
-     * @param ReflectionClass $reflectionClass
-     *
-     * @return array
-     */
-    private function _findSetters(ReflectionClass $reflectionClass)
-    {
-        $setters = array();
-        $docBlock = $reflectionClass->getDocComment();
-        if ($docBlock) {
-            if (preg_match_all('/@inject (\w+)/', $docBlock, $matches)) {
-                foreach ($matches[1] as $setter) {
-                    $setters[] = $setter;
-                }
-            }
-        }
-
-        return $setters;
-    }
-
-    /**
-     * TODO
-     */
-    private function _callSetters(Horde_Injector $injector, $instance, $setters)
-    {
-        foreach ($setters as $setter) {
-            $reflectionMethod = new ReflectionMethod($instance, $setter);
-            $reflectionMethod->invokeArgs(
-                $instance,
-                $injector->getMethodDependencies($reflectionMethod)
-            );
-        }
-    }
-}
index 5fc1d67..7b77ebc 100644 (file)
        <file name="Factory.php" role="php" />
        <file name="Implementation.php" role="php" />
       </dir> <!-- /lib/Horde/Injector/Binder -->
-      <dir name="Filter">
-       <file name="AnnotatedSetterInjector.php" role="php" />
-      </dir> <!-- /lib/Horde/Injector/Filter -->
       <file name="Binder.php" role="php" />
       <file name="Exception.php" role="php" />
-      <file name="Filter.php" role="php" />
       <file name="Scope.php" role="php" />
       <file name="TopLevel.php" role="php" />
      </dir> <!-- /lib/Horde/Injector -->
    <install as="Horde/Injector.php" name="lib/Horde/Injector.php" />
    <install as="Horde/Injector/Binder.php" name="lib/Horde/Injector/Binder.php" />
    <install as="Horde/Injector/Exception.php" name="lib/Horde/Injector/Exception.php" />
-   <install as="Horde/Injector/Filter.php" name="lib/Horde/Injector/Filter.php" />
    <install as="Horde/Injector/Scope.php" name="lib/Horde/Injector/Scope.php" />
    <install as="Horde/Injector/TopLevel.php" name="lib/Horde/Injector/TopLevel.php" />
    <install as="Horde/Injector/Binder/Closure.php" name="lib/Horde/Injector/Binder/Closure.php" />
    <install as="Horde/Injector/Binder/Factory.php" name="lib/Horde/Injector/Binder/Factory.php" />
    <install as="Horde/Injector/Binder/Implementation.php" name="lib/Horde/Injector/Binder/Implementation.php" />
-   <install as="Horde/Injector/Filter/AnnotatedSetterInjector.php" name="lib/Horde/Injector/Filter/AnnotatedSetterInjector.php" />
    <install as="Horde/Injector/AllTests.php" name="test/Horde/Injector/AllTests.php" />
    <install as="Horde/Injector/BinderTest.php" name="test/Horde/Injector/BinderTest.php" />
    <install as="Horde/Injector/InjectorTest.php" name="test/Horde/Injector/InjectorTest.php" />
diff --git a/framework/Injector/test/Horde/Injector/Filter/AnnotatedSetterInjectorTest.php b/framework/Injector/test/Horde/Injector/Filter/AnnotatedSetterInjectorTest.php
deleted file mode 100644 (file)
index aaaa859..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-class Horde_Injector_Filter_AnnotatedSetterInjectorTest extends PHPUnit_Framework_TestCase
-{
-    public function testAnnotatedSettersAreInjected()
-    {
-        $injector = new Horde_Injector(new Horde_Injector_TopLevel());
-        $foo1 = $injector->createInstance('Horde_Injector_TestFoo');
-        $this->assertNull($foo1->bar);
-
-        $injector->addFilter(new Horde_Injector_Filter_AnnotatedSetterInjector());
-        $foo2 = $injector->createInstance('Horde_Injector_TestFoo');
-        $this->assertType('Horde_Injector_TestBar', $foo2->bar);
-    }
-
-    public function testAnnotatedSettersAreThereWhenCallingGetInstanceAgain()
-    {
-        $injector = new Horde_Injector(new Horde_Injector_TopLevel());
-        $injector->addFilter(new Horde_Injector_Filter_AnnotatedSetterInjector());
-        $foo1 = $injector->getInstance('Horde_Injector_TestFoo');
-
-        $foo2 = $injector->getInstance('Horde_Injector_TestFoo');
-        $this->assertType('Horde_Injector_TestBar', $foo2->bar);
-    }
-}
-
-/**
- * Used by the preceding tests
- *
- * @inject setBar
- */
-class Horde_Injector_TestFoo
-{
-    public $bar;
-
-    public function setBar(Horde_Injector_TestBar $bar)
-    {
-        $this->bar = $bar;
-    }
-}
-
-class Horde_Injector_TestBar
-{
-}