I'm following this tutorial to get a deeper understanding in dependency injection.
Because our host is still on PHP5.3, I'm using Aura\Web -components for HTTP response/request. Dependency injection is done with Auryn\Injector
So far I've managed to get project running, but I cannot use the alias as a classname that I've defined in the injector:
$injector = new \Auryn\Injector;
$injector->alias( 'Http\Request', '\Aura\Web\Request' );
$injector->share( '\Aura\Web\Request' );
$injector->define( '\Aura\Web\Request', array(
':client' => new \Aura\Web\Request\Client( $_SERVER ),
':content' => new \Aura\Web\Request\Content( $_SERVER ),
':globals' => new \Aura\Web\Request\Globals(
new \Aura\Web\Request\Values( $_COOKIE ),
new \Aura\Web\Request\Values( $_ENV ),
new \Aura\Web\Request\Files( $_FILES ),
new \Aura\Web\Request\Values( $_POST ),
new \Aura\Web\Request\Values( $_GET ),
new \Aura\Web\Request\Values( $_SERVER )
),
':headers' => new \Aura\Web\Request\Headers( $_SERVER ),
':method' => new \Aura\Web\Request\Method( $_SERVER, $_POST ),
':params' => new \Aura\Web\Request\Params,
':url' => new \Aura\Web\Request\Url( $_SERVER )
)
);
In my controller I would like to use this alias:
namespace Example\Controllers;
use Http\Request;
class Homepage {
public function __construct( Request $request) { ... }
}
This throws the following error:
Could not make \Example\Controllers\Homepage: Class Http\Request does not exist
I can fix this by declaring the class as:
namespace Example\Controllers;
use Aura\Web\Request;
class Homepage {
public function __construct( Request $request) { ... }
}
Which probably makes the dependency injection a bit.. useless? Auryn still supplies the proper arguments ($action = $injector->make( $action_class );
), but why isn't the alias accepted?
I hope my question makes some sense. :-)