我正在关注本教程以更深入地了解依赖注入。
因为我们的主机仍在 PHP5.3 上,所以我使用Aura\Web -components来进行 HTTP 响应/请求。依赖注入是用Auryn\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 )
)
);
在我的控制器中,我想使用这个别名:
namespace Example\Controllers;
use Http\Request;
class Homepage {
public function __construct( Request $request) { ... }
}
这会引发以下错误:
Could not make \Example\Controllers\Homepage: Class Http\Request does not exist
我可以通过将类声明为:
namespace Example\Controllers;
use Aura\Web\Request;
class Homepage {
public function __construct( Request $request) { ... }
}
这可能使依赖注入有点..没用?Auryn 仍然提供正确的参数 ( $action = $injector->make( $action_class );
),但为什么不接受别名?
我希望我的问题有点道理。:-)