Skip to content
Snippets Groups Projects
Select Git revision
  • 47c8e032d55db9d809f247c6bd220213a14811a9
  • master default protected
  • devel
  • feature/add-escaping-to-templates
  • feature/add-priority-sorting
  • 3.3.0
  • 3.2.1
  • 3.2.0
  • 3.1.0
  • 3.0.0
  • 2.4.12
  • 2.4.11
  • 2.4.10
  • 2.4.9
  • 2.4.8
  • 2.4.7
  • 2.4.6
  • 2.4.5
  • 2.4.4
  • 2.4.2
  • 2.4.1
  • 2.4.0
  • 2.3.2
  • 2.3.1
  • 2.3
25 results

header.php

Blame
  • CallableBinder.php 837 B
    <?php
    
    declare(strict_types=1);
    
    namespace WPDesk\Init\Binding\Binder;
    
    use Psr\Container\ContainerInterface;
    use WPDesk\Init\Binding\ComposableBinder;
    use WPDesk\Init\Binding\Definition;
    use WPDesk\Init\Binding\Definition\CallableDefinition;
    
    class CallableBinder implements ComposableBinder {
    
    	/** @var ContainerInterface */
    	private $container;
    
    	public function __construct( ContainerInterface $c ) {
    		$this->container = $c;
    	}
    
    	public function can_bind( Definition $def ): bool {
    		return $def instanceof CallableDefinition;
    	}
    
    	public function bind( Definition $def ): void {
    		$ref        = new \ReflectionFunction( $def->value() );
    		$parameters = [];
    		foreach ( $ref->getParameters() as $ref_param ) {
    		$parameters[] = $this->container->get( $ref_param->getType()->getName() );
    		}
    		$ref->invokeArgs( $parameters );
    	}
    }