Laravel __construct() - 没有注入?

时间:2016-11-13 17:16:38

标签: php laravel laravel-5.3

我收到错误:

library(tidyr)
library(ggplot2)

# using your input dataset provided in the separate answer
df <- gather(df, variable, value, -Zeitpunkt)

ggplot(df, aes(x = ZP) ) +
  geom_line(aes(y = value, colour = variable, group = variable), lwd = 1.3) + 
  scale_colour_manual(labels = c("Sehr viel Spaß", "Viel Spaß", "Normal", "Wenig Spaß", "Sehr wenig Spaß"),
                      breaks = c("SVS","VS","N","WS","W"),
                      values = c("green", "blue", "black", "Orange", "Red")) +
  xlab("Zeit") +
  scale_y_continuous("Anzahl in Prozent", limits = c(0,65)) + 
  labs(title="Häufigkeit der Auspräungen des Faktors Spaß")

我认为Laravel来到GitHubApp::__construct() must be an instance of App\Project\Repositories\GitProviderRepository 时会有某种魔力,所以我不必将它注入__construct()

new GitHubApp();

在其他课程中:

  use App\Project\Repositories\GitProviderRepository;

    class GitHubApp
    {
        private $gitProviderRepository;

        public function __construct(GitProviderRepository $gitProviderRepository)
        {
            $this->gitProviderRepository = $gitProviderRepository;
        }
    }

2 个答案:

答案 0 :(得分:2)

调用new GithubApp()时,您依靠自己构建GithubApp实例,Laravel不负责构建该实例。

您必须让Laravel为您解析依赖项。有很多方法可以达到这个目的:

使用App外观:

App::make(GithubApp::class);

使用app()辅助方法:

app(GithubApp::class);

或使用resolve()辅助方法:

resolve(GithubApp::class);

在场景后面,您的类类型及其依赖关系将由Illuminate\Container\Container类(Application的父类)解析和实例化。特别是make()build()方法。

希望这有帮助! :)

答案 1 :(得分:1)

您可以尝试:

return app(GitHubApp::class);

return app()->make(GitHubApp::class)

由Laravel强大的IoC容器完成,无需任何配置即可解析类。

当一个类型未绑定在容器中时,它将使用PHP的Reflection工具来检查类并读取构造函数的类型提示。使用此信息,容器可以自动构建类的实例。

Docs