我想做什么 - 1)控制器将依赖于服务的逻辑和东西。 2)服务依赖于存储库进行数据库访问。 3)控制器将服务作为依赖。 4)服务将获取存储库作为依赖。
我的服务类是 -
class AnimeService implements IAnimeService{
protected $animeRepository;
public function _construct(IAnimeRepository $_animeRepository) {
$this->animeRepository = $_animeRepository;
}
public function add(Anime $anime) {
return $this->animeRepository->add($anime);
}
}
问题是 -
Call to a member function add() on null
这是预期的 - 因为_construct永远不会被调用。
顺便说一下;来自我的AppServiceProviderpublic function register()
{
$this->app->bind('\App\Services\Interfaces\IAnimeService', '\App\Services\Implementations\AnimeService');
$this->app->bind('\App\Repositories\Interfaces\IAnimeRepository', '\App\Repositories\Implementations\AnimeRepository');
}
我的问题是 - 1)在这种情况下我可以做些什么来使我的服务工作?
2)最佳做法是什么?
3)还有哪些方法可以实现我的目标?
谢谢。
答案 0 :(得分:1)
构造函数应该命名为__construct
而不是_construct
,并带有两个下划线:)
请参阅php文档:http://php.net/manual/en/language.oop5.decon.php
如果您在控制器构造函数中注入AnimeService
,Laravel应该自动解析依赖关系,因此只需修改构造函数方法的名称就可以使用您所拥有的内容:)< / p>