【发布时间】:2015-03-10 01:26:06
【问题描述】:
我创建了一个app\lib 文件夹来保存我的自定义助手类。我将它添加到 composer.json 中的自动加载并运行 composer dump-autoload。
出于测试目的,我快速创建了一个名为 MyHelper 的类并尝试实例化它,它确实按预期工作。自定义助手类很好地加载。
在我的应用程序中,我需要处理日期。所以我选择在 Carbon 扩展的帮助下工作。我发现它已经在 Laravel 供应商文件夹中了。
为了方便起见,我在 app.php 中添加了一个 alias
'Carbon' => 'Carbon\Carbon'
下面是我的custom helper class。 (下面的代码工作正常)
class MyHelper{
public $today;
public function __construct(){
$this->today = Carbon::now();
}
在上面的代码中,我通过Carbon::now() 创建了一个碳对象。这看起来不错并且工作正常,但据我所知,最好进行依赖注入而不是在构造方法中实例化。这将使测试更容易。
所以我修改了上面的构造方法如下:
public function __construct(Carbon $carbon){
$this->today = $carbon->now();
}
但是,上面的代码不起作用。并且错误报告告诉我构造方法的参数必须是 Carbon\Carbon 的实例。
传递给 Date::__construct() 的参数 1 必须是 碳\碳,没有给出
我还添加了use Carbon\Carbon as Carbon,但没有任何乐趣。我想我误解了 Laravel 的一些简单逻辑。可能会误解依赖注入或解析类的 IOC。
启发我..
【问题讨论】:
标签: php laravel laravel-4 dependency-injection inversion-of-control