diff --git a/src/Binding/Binder.php b/src/Binding/Binder.php index 3997c59c87bee421689b8e49a991de8a233e4c01..0dc334f13f1d4aa581da04fd090154b9dc5e12ed 100644 --- a/src/Binding/Binder.php +++ b/src/Binding/Binder.php @@ -6,7 +6,5 @@ namespace WPDesk\Init\Binding; interface Binder { - public function can_bind( Definition $def ): bool; - public function bind( Definition $def ): void; } diff --git a/src/Binding/Binder/CallableBinder.php b/src/Binding/Binder/CallableBinder.php index f0561b5901f32c710c2a7f72f73685abc6298e83..70858003a1e18d85843bd9deb98c58037ee913f8 100644 --- a/src/Binding/Binder/CallableBinder.php +++ b/src/Binding/Binder/CallableBinder.php @@ -5,11 +5,11 @@ declare(strict_types=1); namespace WPDesk\Init\Binding\Binder; use Psr\Container\ContainerInterface; -use WPDesk\Init\Binding\Binder; +use WPDesk\Init\Binding\ComposableBinder; use WPDesk\Init\Binding\Definition; use WPDesk\Init\Binding\Definition\CallableDefinition; -class CallableBinder implements Binder { +class CallableBinder implements ComposableBinder { /** @var ContainerInterface */ private $container; @@ -23,13 +23,11 @@ class CallableBinder implements Binder { } public function bind( Definition $def ): void { - if ( $def instanceof CallableDefinition ) { - $ref = new \ReflectionFunction( $def->value() ); - $parameters = []; - foreach ( $ref->getParameters() as $ref_param ) { - $parameters[] = $this->container->get( $ref_param->getType()->getName() ); - } - $ref->invokeArgs( $parameters ); + $ref = new \ReflectionFunction( $def->value() ); + $parameters = []; + foreach ( $ref->getParameters() as $ref_param ) { + $parameters[] = $this->container->get( $ref_param->getType()->getName() ); } + $ref->invokeArgs( $parameters ); } } diff --git a/src/Binding/Binder/CompositeBinder.php b/src/Binding/Binder/CompositeBinder.php index 569b3fcc868391437ef92a43dd0df16c01225fe4..8b88634687b2fbb7b07c99b710db520398b33c2f 100644 --- a/src/Binding/Binder/CompositeBinder.php +++ b/src/Binding/Binder/CompositeBinder.php @@ -21,16 +21,6 @@ final class CompositeBinder implements Binder { $this->binders[] = $binder; } - public function can_bind( Definition $def ): bool { - foreach ( $this->binders as $binder ) { - if ( $binder->can_bind( $def ) ) { - return true; - } - } - - return false; - } - public function bind( Definition $def ): void { foreach ( $this->binders as $binder ) { if ( $binder->can_bind( $def ) ) { diff --git a/src/Binding/Binder/HookableBinder.php b/src/Binding/Binder/HookableBinder.php index c0d7a7af87732d8ab2c933f9765e616272d62e7a..f8426dacddff213d58bdd0be5e9f0d68fb9ffaee 100644 --- a/src/Binding/Binder/HookableBinder.php +++ b/src/Binding/Binder/HookableBinder.php @@ -5,11 +5,11 @@ declare(strict_types=1); namespace WPDesk\Init\Binding\Binder; use Psr\Container\ContainerInterface; -use WPDesk\Init\Binding\Binder; +use WPDesk\Init\Binding\ComposableBinder; use WPDesk\Init\Binding\Definition; use WPDesk\Init\Binding\Definition\HookableDefinition; -class HookableBinder implements Binder { +class HookableBinder implements ComposableBinder { /** @var ContainerInterface */ private $container; @@ -23,8 +23,6 @@ class HookableBinder implements Binder { } public function bind( Definition $def ): void { - if ( $def instanceof HookableDefinition ) { - $this->container->get( $def->value() )->hooks(); - } + $this->container->get( $def->value() )->hooks(); } } diff --git a/src/Binding/Binder/StoppableBinder.php b/src/Binding/Binder/StoppableBinder.php index 3b15700294fb71db32d352d0e0299de9460e7150..e74c7e08218e6ea870772e7c519053ed1a9c5721 100644 --- a/src/Binding/Binder/StoppableBinder.php +++ b/src/Binding/Binder/StoppableBinder.php @@ -5,12 +5,12 @@ declare(strict_types=1); namespace WPDesk\Init\Binding\Binder; use Psr\Container\ContainerInterface; -use WPDesk\Init\Binding\Binder; +use WPDesk\Init\Binding\ComposableBinder; use WPDesk\Init\Binding\StoppableBinder as Stop; use WPDesk\Init\Binding\Definition; use WPDesk\Init\Binding\Definition\HookableDefinition; -class StoppableBinder implements Binder { +class StoppableBinder implements ComposableBinder { /** @var ContainerInterface */ private $container; diff --git a/src/Binding/ComposableBinder.php b/src/Binding/ComposableBinder.php new file mode 100644 index 0000000000000000000000000000000000000000..8498244e65ee2970b27a9e3729dc26e546d4f64c --- /dev/null +++ b/src/Binding/ComposableBinder.php @@ -0,0 +1,13 @@ +<?php + +declare(strict_types=1); + +namespace WPDesk\Init\Binding; + +/** + * Can be composed with other binders within {@see CompositeBinder} class. + */ +interface ComposableBinder extends Binder { + + public function can_bind( Definition $def ): bool; +} diff --git a/src/Binding/Loader/ArrayBindingLoader.php b/src/Binding/Loader/ArrayDefinitions.php similarity index 100% rename from src/Binding/Loader/ArrayBindingLoader.php rename to src/Binding/Loader/ArrayDefinitions.php