Laravel __construct() - 不注入?
Laravel __construct() - without injecting?
我遇到错误:
GitHubApp::__construct() must be an instance of App\Project\Repositories\GitProviderRepository
我认为 Laravel 对 __construct()
有某种魔力,所以我不必将其注入 new GitHubApp();
?
use App\Project\Repositories\GitProviderRepository;
class GitHubApp
{
private $gitProviderRepository;
public function __construct(GitProviderRepository $gitProviderRepository)
{
$this->gitProviderRepository = $gitProviderRepository;
}
}
其他class:
return new GitHubApp();
你可以试试:
return app(GitHubApp::class);
或
return app()->make(GitHubApp::class)
由Laravel强大的IoC容器完成,无需任何配置即可解析classes。
当容器中没有绑定类型时,它将使用 PHP 的反射功能检查 class 并读取构造函数的类型提示。使用此信息,容器可以自动构建 class.
的实例
当调用new GithubApp()
时,您依靠自己构建GithubApp
实例,Laravel不负责构建该实例。
你必须让 Laravel 为你解决依赖关系。有多种方法可以实现此目的:
使用App
门面:
App::make(GithubApp::class);
使用app()
辅助方法:
app(GithubApp::class);
或使用resolve()
辅助方法:
resolve(GithubApp::class);
在幕后,您的 class 类型及其依赖项将由 Illuminate\Container\Container
class(Application
的父 class 解析和实例化).具体通过 make()
和 build()
方法。
希望对您有所帮助! :)
我遇到错误:
GitHubApp::__construct() must be an instance of App\Project\Repositories\GitProviderRepository
我认为 Laravel 对 __construct()
有某种魔力,所以我不必将其注入 new GitHubApp();
?
use App\Project\Repositories\GitProviderRepository;
class GitHubApp
{
private $gitProviderRepository;
public function __construct(GitProviderRepository $gitProviderRepository)
{
$this->gitProviderRepository = $gitProviderRepository;
}
}
其他class:
return new GitHubApp();
你可以试试:
return app(GitHubApp::class);
或
return app()->make(GitHubApp::class)
由Laravel强大的IoC容器完成,无需任何配置即可解析classes。
当容器中没有绑定类型时,它将使用 PHP 的反射功能检查 class 并读取构造函数的类型提示。使用此信息,容器可以自动构建 class.
的实例当调用new GithubApp()
时,您依靠自己构建GithubApp
实例,Laravel不负责构建该实例。
你必须让 Laravel 为你解决依赖关系。有多种方法可以实现此目的:
使用App
门面:
App::make(GithubApp::class);
使用app()
辅助方法:
app(GithubApp::class);
或使用resolve()
辅助方法:
resolve(GithubApp::class);
在幕后,您的 class 类型及其依赖项将由 Illuminate\Container\Container
class(Application
的父 class 解析和实例化).具体通过 make()
和 build()
方法。
希望对您有所帮助! :)