我想在Laravel 4控制器中制作可测试的代码。我知道DI(依赖注入),我知道可测试代码可能如下:
class UsersController extends BaseController
{
public function __construct(User $user, Notice $notice)
{
$this->user = $user;
$this->notice = $notice;
}
public function getIndex()
{
...
$this->user
...
$this->notice
...
}
public function getPage()
{
...
$this->user
...
}
}
如您所见,我将两个对象注入控制器。
对于getIndex
函数,它是完美的,我在其中使用了两个对象。
但请注意,对于getPage
功能,我只使用$this->user
,我不需要$this->notice
。
但是,$this->notice
对象已经实例化了,这真的不太好。
有没有更好的方法来不实例化所有对象?
答案 0 :(得分:5)
在大多数情况下,我认为这是过早的优化,因为严重的开销可能是微不足道的,你只是在浪费你的时间。
如果这是您应用中的性能问题,那么您有以下解决方案:
但是你可能不应该关心创建一个你不使用的对象注入,因为你只能保存0.00001秒,没有人会看到差异。
答案 1 :(得分:1)
Laravel 5将进行控制器方法注入。